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

Помогите с getline - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Создать класс матрица Данный класс содержит http://www.cyberforum.ru/cpp-beginners/thread384515.html
Создать класс матрица Данный класс содержит указатель на long, размер строк и столбцов и состояние ошибки. Определить конструктор без параметров, конструктор с одним параметром и конструктор с двумя параметрами, деструктор. Определить методы доступа: возвращать значение элемента (i,j) и адрес этого элемента. Определить функцию печати. Определить функции сложения и вычитания (матрицы с матрицей),...
C++ Ceмма чётных и нечётных чисел Вычислить сумму чётных и сумму не чётных чисел натурального ряда то 1 до n. Вот что получается. Программа работает, но не верно. int main() {int n, s1=0, s2=0; cin >> n; for (int i=1; i<=n; ++i) if (i / 2) s1 = s1 + i; http://www.cyberforum.ru/cpp-beginners/thread384506.html
C++ помогите с snmp
Привет всем, Использую библиотеку snmp.h, пишу на visual studio 2010, как с помощью запроса (например SnmpMgrRequest) узнать какая версия snmp у агента?? в интернете ничего нормального найти не могу. Пожалуйста приведите какой-нибудь пример
C++ найти сумму чисел, расположенных перед первым минимальным.
Помогите пожалуйста. Как найти сумму чисел, расположенных перед первым минимальным. ??? Не получается. Понимаю, что нужно использовать цикл, но как именно? Очень жду вашей помощи, хотя бы совета.
C++ Перевод строки при записи в файл http://www.cyberforum.ru/cpp-beginners/thread384480.html
Почему при выводе на экран оператор endl; переводит строку на новую, а при записи в файл не переводит, а печатает всё в строчку ? const int rowD = 9, columnD = 4;//Размер преобразованного массива char arrayD; //Дробный двумерный массив ofstream xxx("zzz.txt");
C++ Непонятное поведение sscanf(.., "%lf", ..) Здравствуйте все! Столкнулся с такой проблемой: читаю строку из трех вещественных чисел - 18.4, 5.05, 1.015; смотрю значение value - а там вместо 18.4 - 18.399999999.... Подскажите пожалуйста, почему это происходит, можно ли с этим бороться, и, если можно, то каким образом? double value; sscanf(str, "TEXT %lf, %lf, %lf", &value, &value, &value); подробнее

Показать сообщение отдельно
dg91
0 / 0 / 0
Регистрация: 15.11.2011
Сообщений: 4
15.11.2011, 23:09  [ТС]     Помогите с getline
Net_Wanderer
спасибо, в вашем варианте зацикливания не происходит. Оно и понятно. Строки getline не читает, => цикл завершается.
Но мне было непонятно, почему не происходит дальнейшее чтение файла?
То есть при прочтении строки, следующей за строкой длины большей, чем (buffLen - 1), функция возвращает 0. Почему?

Разобрался, найдя более полную документацию по классу ifstream.

Оказывается, в случае недостаточной длины буфера функция getline выставляет внутренний флаг ios::failbit. Сбросить его можно с помощью метода clear().

Все=)


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
int buffLen = 10;
char* buff = new char[buffLen];
while(!finp.eof())
{
  finp.getline(buff, buffLen);
  MessageBox(hWnd, buff, "Показываем строку", MB_OK);
  ios::iostate i;
  i = finp.rdstate();
  if(i & ios::failbit)
  {
    MessageBox(hWnd, "Выставлен бит поправимой ошибки", "Бит установлен", MB_OK);
    //сбрасываем этот бит
    finp.clear();
  }
  if(!(i & ios::failbit))
  {
    MessageBox(hWnd, "Бит поправимой ошибки был сброшен", "Бит сброшен", MB_OK);
  }
}
delete[] buff;
правда, мессаджБоксы появляются не совсем в том порядке, в котором я думал, что они будут появляться...Но само считывание из файла теперь абсолютно корректно. Если честно, мессаджБоксы появляются в каком-то вообще адском порядке...но это уже другой вопрос. Разберусь.
Всем удачи! Спасибо форуму
 
Текущее время: 09:00. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru