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

Mud*_*zay 2 c++ console system c++11

我尝试system()在c ++应用程序中使用,如果我这样做,它可以很好地工作:

system("notepad");
Run Code Online (Sandbox Code Playgroud)

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

cin >> cmdlol;  
system(cmdlol);
Run Code Online (Sandbox Code Playgroud)

错误:

不能将'std :: string {aka std :: basic_string}'转换为'const char*'以将参数'1'转换为'int system(const char*)'|

son*_*yao 11

cmdlol似乎是std::string,它无法const char*隐式转换.并且std::system只接受const char*它的论点,这就是编译器抱怨的原因.

你可以std::basic_string::c_str()明确使用.

system(cmdlol.c_str());
Run Code Online (Sandbox Code Playgroud)

关于为什么system("notepad");效果很好,"notepad"是一个带有类型(包括空字符)的字符串文字const char[8],注意它不是,std::string并且可能const char*在传递时衰减std::system.