Форум программистов, компьютерный форум CyberForum.ru

Переполнение строки при считывании из файла - C++

Восстановить пароль Регистрация
 
Sean_mephi
1 / 1 / 1
Регистрация: 15.11.2013
Сообщений: 79
05.02.2014, 13:26     Переполнение строки при считывании из файла #1
Считываю я строки из файла, в котором их 500 тысяч. Если строка начинается на R, то я записываю её в другой файл. Примерно на 312000-й строке мне выдаётся ошибка string subscript is out of range
Вот отрывок кода:
C++ (Qt)
1
2
3
4
5
6
while(rts)
        {
            string s;
            getline(rts,s);
            if(s[0]=='R') sorted<<s<<endl;
        }
Что я делаю не так? Хотелось бы чтобы процесс шёл до конца файла. Писать нужно только на плюсах.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11815 / 6794 / 769
Регистрация: 27.09.2012
Сообщений: 16,867
Записей в блоге: 2
Завершенные тесты: 1
05.02.2014, 13:30     Переполнение строки при считывании из файла #2
C++
1
2
3
4
5
string s;
while(getline(rts,s))
        {           
            if(s.size() > 0 && s[0]=='R') sorted<<s<<endl;
        }
Sean_mephi
1 / 1 / 1
Регистрация: 15.11.2013
Сообщений: 79
05.02.2014, 13:33  [ТС]     Переполнение строки при считывании из файла #3
Croessmah, спасибо. А ещё такой вопрос: Мне нужно откинуть строки в которых есть символ #. Он может стоять где угодно в строке. Какое условие в if нужно добавить?
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11815 / 6794 / 769
Регистрация: 27.09.2012
Сообщений: 16,867
Записей в блоге: 2
Завершенные тесты: 1
05.02.2014, 13:39     Переполнение строки при считывании из файла #4
C++
1
2
3
4
std::size_t found = s.find('#');
if (found!=std::string::npos){
   //символ найден
}
Sean_mephi
1 / 1 / 1
Регистрация: 15.11.2013
Сообщений: 79
05.02.2014, 14:04  [ТС]     Переполнение строки при считывании из файла #5
Croessmah, вообще ничего не записывает.
C++ (Qt)
1
2
3
4
5
6
7
8
9
    else
    {
        string s;
        while(getline(rts,s))
            {         
                size_t found = s.find('#');
                if(s.size() > 0 && s[0]=='R' && (found!=string::npos)) sorted<<s<<endl;
            }
    }
Добавлено через 13 минут
Потому что там нет #. Меня обманул эксель. Спасибо Вам за помощь
Yandex
Объявления
05.02.2014, 14:04     Переполнение строки при считывании из файла
Ответ Создать тему
Опции темы

Текущее время: 20:46. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru