错误:无法将 'std::basic_string::iterator ...' 转换为 'const char* for argument '1' ...'

2023-12-31

我收到以下错误:

error: cannot convert 'std::basic_string<char>::iterator {aka __gnu_cxx::__normal
_iterator<char*, std::basic_string<char> >}' to 'const char*' for argument '1' 
to 'int remove(const char*)'

由于某种原因,当我在 Mac 上工作时,我的程序可以完美编译……但是一旦我使用 Linux 机器,这个错误就会在不止一个地方弹出。

以下是弹出错误的实例之一:

SomeClass::SomeClass(string t, string art, Time dur) {
    char chars[] = ",";
    t.erase(std::remove(t.begin(), t.end(), chars[0]), t.end());
    art.erase(std::remove(art.begin(), art.end(), chars[0]), art.end());
    // Some more code ...
}

更具体地说,错误来自这一行:

t.erase(std::remove(t.begin(), t.end(), chars[0]), t.end());

有谁知道如何解决这个问题?


你忘了#include <algorithm>, where std::remove http://en.cppreference.com/w/cpp/algorithm/remove位于。没有它,你的编译器只知道this std::remove http://en.cppreference.com/w/cpp/io/c/remove(我在 Visual C++ 14 中遇到同样的错误),它是在间接包含中定义的<cstdio> header.

编译器之间的不同行为是不同的结果#include标准库实现的层次结构。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

错误:无法将 'std::basic_string::iterator ...' 转换为 'const char* for argument '1' ...' 的相关文章

随机推荐