我得到这个错误:“invalid operators of types 'const char*' and 'const char [6]' to binary 'operator +'”when I try to compile my script.这里应该是错误:
string name = "john";
system(" quickscan.exe resolution 300 selectscanner jpg showui showprogress filename '" + name + ".jpg'");
字符串
5条答案
按热度按时间pengsaosao1#
表达式的类型
字符串
是
std::string
。但是函数系统有声明型
也就是说,它接受
const char *
类型的参数没有转换运算符可以将
std::string
类型的对象隐式转换为const char *
类型的对象。然而类
std::string
有两个函数显式地进行这种转换。它们是c_str()
和data()
(最后一个只能在支持C++11的编译器上使用)所以你可以写
型
不需要为表达式使用中间变量。
abithluo2#
std::string + const char*
会导致另一个std::string
。system
不接受std::string
,并且您不能将char*
与+
运算符连接在一起。如果您想以这种方式使用代码,则需要:字符串
请参阅std::string operator+(const char*)
pftdvrlh3#
将字符串文字与
std::string
相加会产生另一个std::string
。system
需要const char*
。您可以使用std::string::c_str()
:字符串
hec6srdp4#
正如所有其他答案所显示的,问题在于使用
+
添加std::string
和const char*
会导致std::string
,而system()
需要const char*
。解决方案是使用c_str()
。然而,您也可以在没有临时的情况下这样做:字符串
44u64gxh5#
系统函数需要const char *,而你的表达式是
std::string
类型。你应该写字符串