![](/img/trans.png)
[英]cannot convert 'std::basic_string<char>' to 'const char*' for argument '1' to 'int system(const char*)'
[英]error: cannot convert 'std::basic_string<char>::iterator ...' to 'const char* for argument '1' ...'
我收到以下錯誤:
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>
,其中std::remove
位於。 如果沒有它,您的編譯器只知道這個std::remove
(我在 Visual C++ 14 中遇到了同樣的錯誤),它是在間接包含的<cstdio>
標頭中定義的。
編譯器之間的不同行為是標准庫實現的不同#include
層次結構的結果。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.