iso*_*iso 0 c++ string stream char
我无法让system()在字符串变量中运行命令.
ostringstream convert;
convert << getSeconds(hours);
string seconds = convert.str(); /* converts the output of 'getSeconds()' into
a string and puts it into 'seconds' */
string cmd = "shutdown /s /t " + seconds;
system(cmd);
Run Code Online (Sandbox Code Playgroud)
getSeconds()只需要一个小时的int,将其转换为秒并以秒为单位返回一个int.一切都运行良好,没有错误,直到它到达system(cmd);.编译器然后吐出这个错误:
error: cannot convert 'std::string {aka std::basic_string<char>}' to
'const char*' for argument '1' to 'int system(const char*)'
Run Code Online (Sandbox Code Playgroud)
这是我的包括:
#include <iostream>
#include <string>
#include <cstdlib>
#include <sstream>
Run Code Online (Sandbox Code Playgroud)
我知道这已经得到了评论的回答,但没有真正解释过:
该system功能是C功能.它不"理解"C++样式字符串.为此,您需要使用该c_str()功能.换句话说,你需要system(cmd.c_str());.
这适用于仍然可以在C++中使用的大量C样式函数,因为C++的一个主要特性是您仍然可以在C++中使用传统的C代码(大部分).因此,这同样适用于几乎所有采用字符串的C样式函数 - printf("cmd=%s", cmd.c_str());将打印您的命令.
编写自己的包装函数是可能的:
int system(const std::string &cmd)
{
return system(cmd.c_str());
}
Run Code Online (Sandbox Code Playgroud)
现在,您的其余代码可以使用system常规C++样式字符串.
| 归档时间: |
|
| 查看次数: |
668 次 |
| 最近记录: |