Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
HPNOTIQ
0 / 0 / 1
Регистрация: 10.07.2015
Сообщений: 2
#1

Произвольный доступ в файл. Лишний символ новой стоки - C++

27.10.2015, 01:04. Просмотров 230. Ответов 2
Метки нет (Все метки)

Здравствуйте, помогите разобратся.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include <fstream>
 
using namespace std;
 
int main(){
    ifstream fin("src.txt");
    int i = 0;
    while (fin.peek() != EOF) {
        fin.seekg(i++);
        cout << fin.get() << endl;
    }
}
При помощи произвольного доступа в файл программа по-байтово читает ANCII код кажого символа из файла(вплоть до конца файла), и выводит каждый в новой строке.

Содержимое "src.txt":
1
2
3

Вывод программы:
49
10
10
50
10
10
51

Вопрос - почему код символа новой строки выводится дважды?

P.S.
Windows 7 32
MVS 2015
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.10.2015, 01:04
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Произвольный доступ в файл. Лишний символ новой стоки (C++):

Лишний символ при компиляции
#include &lt;iostream&gt; #include &lt;fstream&gt; #include &lt;stdio.h&gt; #include &lt;cstring&gt;...

Лишний символ при работе со строками
(объясните, пожалуйста откуда он берется и как от него избавиться) код:...

Контейнер map. Выводит лишний символ
Вот код. Шифр простой замены. В конце выводит последний символ 2 раза подряд....

Лишний символ в конце при выводе через fgetc
Выводится лишний символ &quot;я&quot; в самом конце текста, как бы я не изменял...

Произвольный доступ к строкам
правильно ли я понимаю что в c++ нет функции &quot;прочитать из файла строку номер...

Стек и произвольный доступ
dederkay, то что вы делается сложно назвать стеком. Это больше похоже на...

2
Renji
2129 / 1488 / 453
Регистрация: 05.06.2014
Сообщений: 4,330
27.10.2015, 02:36 #2
Цитата Сообщение от HPNOTIQ Посмотреть сообщение
Вопрос - почему код символа новой строки выводится дважды?
Их под Виндой и должно быть два. Правда, разных (\r, \n). Попробуйте ifstream fin("src.txt",ios_base::binary), подозреваю, что у вас get пытается символы новой строки преобразовывать, хотя его никто не просит.
1
HPNOTIQ
0 / 0 / 1
Регистрация: 10.07.2015
Сообщений: 2
27.10.2015, 15:40  [ТС] #3
Цитата Сообщение от Renji Посмотреть сообщение
Их под Виндой и должно быть два. Правда, разных (\r, \n). Попробуйте ifstream fin("src.txt",ios_base::binary), подозреваю, что у вас get пытается символы новой строки преобразовывать, хотя его никто не просит.
Спасибо за ответ, Вы оказались абсолютно правы - в обычном режиме get() преобразовывал возврат каретки('\r') в символ новой строки('\n'), при использовании бинарного режима вывод стал следующим:
49
13
10
50
13
10
51
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.10.2015, 15:40
Привет! Вот еще темы с решениями:

Произвольный доступ к строкам файла
Дан файл , содержащий сведения об учениках школы. Нужно поочередно выводить...

Поиск и произвольный доступ внутри файла
Всем привет! Допустим есть текстовый файл, выглядит так: ...

Произвольный доступ к файлу большого размера 4+гб
Предыстория. Поверхностно изучил файлы и пошел дальше, потом решил вернуться и...

Найти, сколько раз входит в строку некоторый произвольный символ
описать функцию работы со строкой символов, которая найдет, сколько раз входит...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru