Я получаю эту ошибкуРазыменование дает строку итераторов Int
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
?
Вы должны написать 'cout << ((* i)! = 'S') << endl;' (обратите внимание на одинарные кавычки). –
Вы сравниваете символ ('* i') с указателем на строку (' 's ''). Это не сработает. –
, если вы используете 'auto' уже, почему бы не использовать range-for, как в' for (auto const & c: s) {cout << (c! = 'S') << '\ n'; } '? (обратите внимание, что вы редко хотите использовать 'endl' и чаще всего' \ n') – TemplateRex