Почему не работает код? (c++) - Вопросы по С+

Вопрос Почему не работает код? (c++)

Регистрация
16 Сен 2013
Сообщения
99
Репутация
0
Спасибо
0
Монет
0
программа должна считывать строку с конца к началу, пока не наткнётся на '-' или '+'.почему не работает?



#define _CRT_SECURE_NO_WARNINGS

#include <iostream>

#include <string>



using namespace std;



int main()

{

string S;

string timeS;

cin >> S;

string::iterator It=S.end();

while (*It != '-' || *It != '+') {

It--;

timeS += *It;

}

cout << timeS;

return 0;

}
 
Регистрация
7 Июл 2013
Сообщения
85
Репутация
1
Спасибо
0
Монет
0
Твоя ошибка в том, что S.end() дает тебе не последний элемент в строке, а следующий за ним. Разыменовывать такой итератор нельзя. Используй вместо end() rbegin()
 
Регистрация
30 Ноя 2013
Сообщения
80
Репутация
0
Спасибо
0
Монет
0
Наугад писал? Зачёт. Хотя бы ноль догадался возвратить.
 
Регистрация
6 Окт 2013
Сообщения
97
Репутация
0
Спасибо
0
Монет
0
#include <iostream>
#include <string>

using namespace std;

int main() {
cout << ">>> ";
string line;
getline(cin, line);
const auto pos = line.find_last_of("-+");
cout << "<<< ";
if (pos != string::npos) {
for (auto i = line.crbegin(); *i != line[pos]; ++i) {
cout.put(*i);
}
} else {
puts("Not found!");
}
}
 
Сверху Снизу