C++ 系统()没有合适的转换C++;
我有两个文件名列表C++ 系统()没有合适的转换C++;,c++,system,C++,System,我有两个文件名列表 std::list<std::string> userfontlist; std::list<std::string>::iterator it; std::list<std::string> CAATfontlist; std::list<std::string>::iterator it2; std::list<std::string> doesnthavelist; 系统(a)说我“没有从std字符串到con
std::list<std::string> userfontlist;
std::list<std::string>::iterator it;
std::list<std::string> CAATfontlist;
std::list<std::string>::iterator it2;
std::list<std::string> doesnthavelist;
系统(a)说我“没有从std字符串到const char*的合适转换函数”。如果我把整个东西放在一个字符串中,它就可以工作,但当我连接字符串和y.c_str()时就不行了。我没有运气尝试将std::string转换为const*char,甚至不确定这是否有用。正如它所说的,没有任何版本的
system()
能够理解std::string
,并且std::string
不能自由转换为const-char*
(这system()
确实理解),因为在一般情况下,std::string
可能会以没有意义的方式消失
您可以轻松地从std::string
显式转换为const char*
,不过:使用std::string::c_str
,将最后一行写为
system(a.c_str());
请注意,返回的
const char*
的生存期与它来自的字符串绑定,一旦超出范围,指针将无效。不过,这个例子是使用它的好时机,因为system()
不会“保持”指针的返回值。我想我需要走开。非常感谢。我想我没有意识到连接使它再次输入不匹配。事实上,它的类型与您给定的完全相同,定义为string a=…
将始终是std::string
system(a.c_str());