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

标签 c++ c++11 console system

<分区>

我试图在 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 ,不能隐式转换为 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

关于c++ - 在 C++ 中调用 system() 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37318670/

相关文章:

c++ - openAL - alBufferData 和 AL_INVALID_VALUE

c++ - 为什么在下面的代码中调用了第一个复制构造函数?

c++ - 如何在类 noexcept 之外定义默认构造函数?

c++ - constexpr 函数的规则

c# - 如何等待 2 秒之类的控制台输入?

c# - 重载 Console.ReadLine 可能吗? (或任何静态类方法)

javascript - 不安全的 JavaScript 尝试使用 URL 访问框架

c++ - 无限嵌套具有变体的 map

c++ - 如何在 Linux 上的 Flutter 插件中使用 CMake 正确链接 ffmpeg?

c++ - 谁能解释一下当前C++0x标准草案的这一段?