Неправильно работает программа для подсчёта строк

Рейтинг: -3Ответов: 1Опубликовано: 06.05.2015

У меня есть программа, только вот она почему-то не работает. Вот главная функция из нее. Что не так?

void readfile()
{
    ifstream f("text.txt", ios_base::in);
    string s;
    int i = 0;
    char c;
    cout << "Какой символ?";
    cin >> c;
    while (f){
        f >> s;
        i += (s[s.length()] == c) ? 1 : 0;
    }
    cout << "Таких строк: " << i;
    system("pause");
}

Она должна считать количество строк оканчивающихся на заданный символ. Она работает но не правильно. Все время пишет что 0.

Ответы

▲ 1Принят

Индексация в C++ производится от нуля, то есть индексы находятся в диапазоне от 0 до (N-1).

В вашем случае последний символ строки можно получить так:

s[s.length() - 1]

или просто (если компилятор новый):

s.back()

или для верности (чтобы проверялась доступность индекса):

s.at(s.size() - 1)