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

Последний элемент из файла выводится 2 раза - C++

Восстановить пароль Регистрация
 
qazc
0 / 0 / 1
Регистрация: 01.11.2011
Сообщений: 26
08.09.2013, 20:33     Последний элемент из файла выводится 2 раза #1
Добрый вечер. Подскажите, пожалуйста, почему при чтении из файла последний элемент выводиться 2 раза? Если в файле такие данные: "string1 string2 string3", то в результате получится "string1string2string3string3".

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <fstream>
#include <string>
 
int main() {
 
std::string str;
std::string result;
 
std::ifstream fromFile("test.txt");
 
if(!fromFile)
    std::cout << "Error";
 
while(!fromFile.eof()) {
    fromFile >> str;
    result+=str;
}
 
std::cout << result;
 
return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.09.2013, 20:33     Последний элемент из файла выводится 2 раза
Посмотрите здесь:

C++ Ввод матрицы из файла - затирает последний элемент предыдущей строки
C++ Найти максимальный элемент массива и вывести последний четный элемент
C++ При создании таблицы результат выводится два раза
Строки. Как найти в слове первый элемент? Второй элемент, последний элемент? C++
C++ Почему цикл с условием EOF читает последний символ 2 раза?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nullik
 Аватар для Nullik
43 / 12 / 1
Регистрация: 13.03.2013
Сообщений: 297
Завершенные тесты: 1
08.09.2013, 20:37     Последний элемент из файла выводится 2 раза #2
а в файле запись в строчку или в столбец?
qazc
0 / 0 / 1
Регистрация: 01.11.2011
Сообщений: 26
08.09.2013, 20:39  [ТС]     Последний элемент из файла выводится 2 раза #3
В строку, но записаны через пробел.
Nullik
 Аватар для Nullik
43 / 12 / 1
Регистрация: 13.03.2013
Сообщений: 297
Завершенные тесты: 1
08.09.2013, 20:44     Последний элемент из файла выводится 2 раза #4
qazc, я записала в столбец -- всё отлично считал.

Добавлено через 1 минуту
лол, когда в строчку записала, так же вывод сделал. Корректно, в смысле.
значит проблема только у тебя.
qazc
0 / 0 / 1
Регистрация: 01.11.2011
Сообщений: 26
08.09.2013, 20:46  [ТС]     Последний элемент из файла выводится 2 раза #5
Я записал в столбец и ничего не поменялось... По прежнему выводит последний элемент 2 раза.
zer0mail
2187 / 1870 / 187
Регистрация: 03.07.2012
Сообщений: 6,656
Записей в блоге: 1
08.09.2013, 20:48     Последний элемент из файла выводится 2 раза #6
Наверное, в файле есть еще пустая строка после string3
qazc
0 / 0 / 1
Регистрация: 01.11.2011
Сообщений: 26
08.09.2013, 20:49  [ТС]     Последний элемент из файла выводится 2 раза #7
Все ок, проблема была в одном пробеле, который стоял после последнего элемента. Всем спасибо.
Nullik
 Аватар для Nullik
43 / 12 / 1
Регистрация: 13.03.2013
Сообщений: 297
Завершенные тесты: 1
08.09.2013, 20:49     Последний элемент из файла выводится 2 раза #8
попробуй запустить программу через точки останова, в то время просматривая локальные переменные и что находится в result. Может там чего появится нового.
maksqwe
4 / 3 / 1
Регистрация: 29.03.2012
Сообщений: 11
08.09.2013, 20:50     Последний элемент из файла выводится 2 раза #9
Цитата Сообщение от Nullik Посмотреть сообщение
лол, когда в строчку записала, так же вывод сделал. Корректно, в смысле.
значит проблема только у тебя.
Проблемы тут не "у тебя" а в формате файла который считывает, если в конце строки стоит перевод на другую строку или пробел то будет в конце дублирование, не будет перевода - не будет дублирования. Проверьте
Nullik
 Аватар для Nullik
43 / 12 / 1
Регистрация: 13.03.2013
Сообщений: 297
Завершенные тесты: 1
08.09.2013, 20:53     Последний элемент из файла выводится 2 раза #10
maksqwe, но проблема то была ведь у него
И даже если бы прогу прокрутил бы через точки -- нашёл бы проблему.

Не по теме:

*ахаха, лол, забавно, ахаха, интересно, почему так "не продуманно" в файлах?

maksqwe
4 / 3 / 1
Регистрация: 29.03.2012
Сообщений: 11
08.09.2013, 21:03     Последний элемент из файла выводится 2 раза #11
Цитата Сообщение от Nullik Посмотреть сообщение
И даже если бы прогу прокрутил бы через точки -- нашёл бы проблему.
Это да

Кстати, почему так не продумано, так как бывают разные файлы и данные в том числе с разными разделителями в конце, unix/win etc.. например '/n' '/r', '/0'
zer0mail
2187 / 1870 / 187
Регистрация: 03.07.2012
Сообщений: 6,656
Записей в блоге: 1
08.09.2013, 21:18     Последний элемент из файла выводится 2 раза #12
Кто мешает написать программу так, чтобы все эти ситуации корректно отрабатывались?
ТС сначала проверяет на eof, а потом читает и обрабатывает
qazc
0 / 0 / 1
Регистрация: 01.11.2011
Сообщений: 26
08.09.2013, 21:23  [ТС]     Последний элемент из файла выводится 2 раза #13
А для чего последний элемент дублируется? От этого есть какие-то плюсы?
zer0mail
2187 / 1870 / 187
Регистрация: 03.07.2012
Сообщений: 6,656
Записей в блоге: 1
08.09.2013, 21:28     Последний элемент из файла выводится 2 раза #14
Цитата Сообщение от qazc Посмотреть сообщение
А для чего последний элемент дублируется? От этого есть какие-то плюсы?
Тебе виднее
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.09.2013, 21:33     Последний элемент из файла выводится 2 раза
Еще ссылки по теме:

C++ Первый отрицательный и последний положительный элемент читаемый из файла
Выводится только последний элемент массива C++
При считывании из файла последний элемент читается дважды C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Nullik
 Аватар для Nullik
43 / 12 / 1
Регистрация: 13.03.2013
Сообщений: 297
Завершенные тесты: 1
08.09.2013, 21:33     Последний элемент из файла выводится 2 раза #15
qazc, у тебя он копируется, как я поняла, в том случае, потому что есть:

C++
1
2
fromFile >> str;
    result+=str;
но там не конец файла из-за лишнего проблема или абзаца.
Вероятно так.
Yandex
Объявления
08.09.2013, 21:33     Последний элемент из файла выводится 2 раза
Ответ Создать тему
Опции темы

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