我尝试在c ++应用中使用system()
如果我这样做,它的效果非常好:
system("notepad");
但是当我尝试这样做时它会出错:
cin >> cmdlol;
system(cmdlol);
错误:
无法转换' std :: string {aka std :: basic_string}'到#const; 字符*'争论' 1' to' int system(const char *)' |
答案 0 :(得分:11)
cmdlol
标注为std::string
,无法隐式转换为const char*
。并且std::system
仅接受const char*
作为其参数,这就是编译器抱怨的原因。
您可以明确使用std::basic_string::c_str()
。
system(cmdlol.c_str());
关于为什么system("notepad");
效果很好,"notepad"
是string literal类型const char[8]
(包括空字符),请注意它不是std::string
并且可能会衰减传递给const char*
后std::system
。
答案 1 :(得分:4)
std::system
想要一个const char*
,这是一个C风格的数组。
要将std :: string转换为const char*
,您可以使用函数c_str()
。
system(cmdlol.c_str());