在 C++ 中调用 system() 的问题

Problems calling system() in c++

我尝试在 C++ 应用程序中使用 system() 如果我这样做的话效果很好:

system("notepad");

但是当我尝试这样做时它会出错:

cin >> cmdlol;  
system(cmdlol);

错误:

cannot convert 'std::string {aka std::basic_string}' to 'const char*' for argument '1' to 'int system(const char*)'|

cmdlol 似乎是 std::string, which can't be converted to const char* implicitly. And std::system 只接受 const char* 作为它的参数,这就是编译器抱怨的原因。

您可以明确地使用 std::basic_string::c_str()

system(cmdlol.c_str());

关于为什么 system("notepad"); 工作得很好,"notepad" 是一个 string literal 类型 const char[8] (包括空字符),注意它不是 std::string 并且传递给 std::system.

时可能会衰减到 const char*

std::system 想要一个 const char*,这是一个 C 风格的数组。

要将 std::string 转换为 const char*,您可以使用函数 c_str()

system(cmdlol.c_str());