c++, строка в цикле
Не могу понять, почему переменную типа string нельзя заключить в цикл? Выдаёт ошибку: "отсутствует оператор "<", соответствующий этим операндам". Код:
string s;
int i, kol;
cout << "Введите строку: ";
cin >> s;
kol = 0;
for (int i = 1; i < s; i++)
{
}
Ответы (3 шт):
Потому что сравниваете метры с часами...
Хотя бы так.
for (int i = 1; i < stoi(s); i++)
Но лучше -
int s;
cin >> s;
for (int i = 1; i < s; i++)
{
И проверить, что все нормально введено. А то введет пользователь что-то типа "нафиг" (вы же в курсе, что cin>>s; читает не строку, а слово?), и что больше - нафиг или 5*?...
Потому что язык С++ строго типизированный и сравнение строки и целого числа в нем не предусмотрено.
Нужно строку преобразовать в целое число сначала.
Если хотите, чтобы цикл выполнялся, пока i < "какое-то число типа данных string" (например, string s = "5"), то используйте stoi(s) (stoi - STring TO Int). Причем стоит добавить проверку на то, что пользователь именно число ввел, а не буквы. Если хотите, чтобы цикл выполнялся столько раз, сколько символов в S, используйте for (int i = 0; i < s.length(); i++), где s.length() - длина строки S (и это выражение - уже INT). Как писали выше сравнивать можно только одни типы данных (int с int, string с string и т.д.). Не забудьте #include <string> и using namespace std;