我收到此错误
comparison between pointer and integer ('int' and 'const char *')
以下代码
#include <iostream>
#include <sstream>
#include <string>
using namespace std;
int main()
{
std::string s("test string");
for(auto i = s.begin(); i != s.end(); ++i)
{
cout << ((*i) != "s") << endl;
}
}
为什么取消引用字符串迭代器会产生int
而不是std::string
?
答案 0 :(得分:9)
实际上,它不会产生char
,它会产生!=
(因为字符串迭代器会迭代字符串中的字符)。由于char
的其他操作数不是const char[2]
(它是char
),标准促销和转化会应用于参数:
int
通过积分促销const char[2]
const char*
通过数组到指针转换转换为int
,这是您到达编译器抱怨的const char*
和cout << ((*i) != 's') << endl;
个操作数的方式。
您应该将解除引用的迭代器与字符进行比较,而不是字符串:
""
const char[N]
包含字符串文字(类型''
),char
包含字符文字(类型capacity
)。