gpt4 book ai didi

c++ - 取消引用字符串迭代器产生 int

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:21:05 25 4
gpt4 key购买 nike

我收到这个错误

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

最佳答案

实际上,它不会产生 int,它会产生 char(因为字符串迭代器会迭代字符串中的字符)。由于 != 的另一个操作数不是 char(它是 const char[2]),标准提升和转换应用于参数:

  • char 通过整数提升提升为int
  • const char[2] 通过数组到指针的转换转换为 const char*

这就是您如何得到编译器提示的 intconst char* 操作数。

您应该将取消引用的迭代器与字符进行比较,而不是字符串:

cout << ((*i) != 's') << endl;

"" 包含一个字符串文字(type const char[N]),'' 包含一个字 rune 字(type 字符).

关于c++ - 取消引用字符串迭代器产生 int,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32579992/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com