我得到这个错误:“当我尝试编译我的脚本时,‘const char*’和‘const char [6]’类型的无效操作数到二进制‘operator+’”。这里应该是错误:
string name = "john";
system(" quickscan.exe resolution 300 selectscanner jpg showui showprogress filename '"+name+".jpg'");
表达方式
" quickscan.exe resolution 300 selectscanner jpg showui showprogress filename '"+name+".jpg'"
是
std::string
。然而功能系统有声明
int system(const char *s);
那就是它接受类型为
const char *
的argumnet
没有转换运算符可以将
std::string
类型的对象隐式转换为 const char *
类型的对象。
尽管如此,
std::string
类有两个显式执行此转换的函数。它们是c_str()
和data()
(最后一个只能用于支持C++11的编译器)
所以你可以写
string name = "john";
system( (" quickscan.exe resolution 300 selectscanner jpg showui showprogress filename '"+name+".jpg'").c_str() );
不需要为表达式使用中间变量。
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());
添加带有
std::string
的字符串文字会产生另一个 std::string
。 system
期待 const char*
。您可以为此使用std::string::c_str()
:
string name = "john";
string tmp = " quickscan.exe resolution 300 selectscanner jpg showui showprogress filename '"+name+".jpg'"
system(tmp.c_str());
正如所有其他答案所示,问题在于使用
std::string
添加 const char*
和 +
会导致 std::string
,而 system()
需要 const char*
。解决方案是使用c_str()
。但是,您也可以在没有临时的情况下进行:
string name = "john";
system((" quickscan.exe resolution 300 selectscanner jpg showui showprogress filename '"+name+".jpg'").c_str());
系统函数需要const char *,而你的表达式是
std::string
类型的。你应该写
string name = "john";
string system_str = " quickscan.exe resolution 300 selectscanner jpg showui showprogress filename '"+name+".jpg'";
system(system_str.c_str ());
尝试使用字符串连接
Statistics(string date)
{
this->date += date;
}
acually 这是班级的一部分..