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());