Gia*_*one 21 c++ string system char
我得到这个错误:"当我尝试编译我的脚本时,类型'const char*'和'const char [6]'到二进制'运算符+''的操作数无效.这应该是错误:
string name = "john";
system(" quickscan.exe resolution 300 selectscanner jpg showui showprogress filename '"+name+".jpg'");
Run Code Online (Sandbox Code Playgroud)
Vla*_*cow 42
表达的类型
" quickscan.exe resolution 300 selectscanner jpg showui showprogress filename '"+name+".jpg'"
Run Code Online (Sandbox Code Playgroud)
是std::string.但是功能系统有声明
int system(const char *s);
Run Code Online (Sandbox Code Playgroud)
也就是说它接受了类型的argumnet const char *
没有转换运算符可以隐式地将类型的对象转换为类型std::string的对象const char *.
尽管如此,class std::string有两个明确执行此转换的函数.它们是c_str()和data()(最后一个只能用于支持C++ 11的编译器)
所以你可以写
string name = "john";
system( (" quickscan.exe resolution 300 selectscanner jpg showui showprogress filename '"+name+".jpg'").c_str() );
Run Code Online (Sandbox Code Playgroud)
不需要为表达式使用中间变量.
Ed *_* S. 10
std::string + const char*导致另一个std::string. system用不了std::string了,你不能连接char*使用的+运营商.如果您想以这种方式使用代码,您将需要:
std::string name = "john";
std::string tmp =
"quickscan.exe resolution 300 selectscanner jpg showui showprogress filename '" +
name + ".jpg'";
system(tmp.c_str());
Run Code Online (Sandbox Code Playgroud)
请参见std :: string operator +(const char*)
| 归档时间: |
|
| 查看次数: |
97633 次 |
| 最近记录: |