在 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());
我尝试在 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());