c++ - System() 没有合适的转换 C++

标签 c++ system

我有 2 个文件名列表。

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;

我想比较这两个列表,并删除它匹配的值。在我将“del/F/Q/A”添加到 y.c_string() 之前,一切似乎都很好。

for (it = userfontlist.begin(); it !=userfontlist.end(); ++it){
    for(it2 = CAATfontlist.begin();it2 !=CAATfontlist.end();++it2){
        if(*it==*it2){
            string y = *it;
            string k = y.c_str();
            string a = "del /F /Q /A " + k;
            system(a);

        }
    }
 }

system(a) 说我“不存在从 std 字符串到 const char * 的合适的转换函数”。如果我把整个东西作为 1 个字符串,它就可以工作,但是当我连接字符串和 y.c_str() 时就不行了。我没有成功尝试将 std::string 转换为 const *char,甚至不确定这是否有帮助。

最佳答案

正如它所说,没有任何版本的 system() 可以理解 std::stringstd::string 不能可以自由转换为 const char *(system() 确实理解),因为 std::string 可能会以不存在的方式消失在一般情况下没有意义。

您可以显式std::string 轻松转换为 const char *,不过:使用 std::string: :c_str,把你的最后一行写成

system(a.c_str());

请注意,返回的 const char * 的生命周期与它来自的 string 相关,一旦超出范围,指针就会失效。不过,这种情况是使用它的好时机,因为 system() 不会“保持”指针超过它自己的返回值。

关于c++ - System() 没有合适的转换 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22901622/

相关文章:

php - 如何插入到两个表中?其中之一用于注册日志

c++ - 需要将 Stack 插入 List

c++ - C 和 C++ 之间的输出冲突

java - 数组和 vector 的内存分配如何工作?

c++ - 在 switch 语句中通过引用返回

c++ - 将变量初始化为包含派生类的 vector 中的对象

C++ Windows 系统 ("path") 如果某处有空间则不工作

wpf - Windows 服务与 WPF 管理工具

C++ 如何在不使用 winapi 的情况下 move 文件并将它们从一个磁盘复制到不同的磁盘?

python - python 中 stub 文件 (.pyi) 有什么用?