Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Werewolf_RU
8 / 8 / 3
Регистрация: 03.02.2014
Сообщений: 205
Завершенные тесты: 1
#1

Ofstream дублирует бэк-слеш - C++

18.04.2014, 20:35. Просмотров 687. Ответов 26
Метки нет (Все метки)

Здравствуйте, столкнулся с проблемой, что при чтении из файла путём использования потока ofstream у меня дублируются все находящиеся в файле бэк-слэши.
Для того чтобы не изобретать с вашей помощью новое колесо сразу скажу, что мне необходимо чтобы из файла скопировался символ переноса строки \n. Как это можно сделать?
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.04.2014, 20:35
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Ofstream дублирует бэк-слеш (C++):

Драйвер виртуального монитора | Скринкаст из (бэк|график|фрейм)буфера - C++
Собственно, пишу я... Свой велосипед - быстрый VNC-подобный (концептуально) сервер/клиент, который... позволит нормально гамать в...

Используя рекурсивный бэк трэкинг сгенерировать все перестановки заданного числа - C++
Используя рекурсивный бэк трэкинг сгенерировать все перестановки заданного числа n.

Сортировка дублирует последний элемент - C++
// одномерный массивы.cpp: определяет точку входа для консольного приложения. // #include "stdafx.h" #include <iostream> #include...

Слеш и hInternet - C++
Вообщем есть такой код int main(int argc, char* argv) { setlocale(LC_CTYPE, ""); //русский текст strcpy(url,"ya.ru"); ...

ofstream - C++
доброго времени суток! Возникла такая проблема: У меня программа должна помещать данные о процессах и модулях в txt файл std::ofstream...

Ofstream - C++
#include <iostream> #include <fstream> using namespace std; int main() { ofstream test("C:\Program Files...

26
alsav22
5428 / 4823 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
18.04.2014, 21:05 #16
Цитата Сообщение от Werewolf_RU Посмотреть сообщение
то поток его игнорирует(а верней останавливается на нём) как и на любом другом разделителе строк - пробелы, табуляции и т.п.
Написали уже:
Цитата Сообщение от nmcf Посмотреть сообщение
Если тебе надо читать всё как есть включая спецсимволы, открывай файл как бинарный.
0
nmcf
5677 / 4987 / 1700
Регистрация: 14.04.2014
Сообщений: 20,325
18.04.2014, 21:07 #17
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
В режиме binary должен всё читать. Только надо read() использовать для этого.
1
Werewolf_RU
8 / 8 / 3
Регистрация: 03.02.2014
Сообщений: 205
Завершенные тесты: 1
18.04.2014, 21:08  [ТС] #18
Цитата Сообщение от nmcf Посмотреть сообщение
Автор, ты как смотришь, что прочитано? Через отладчик?
Да, просматриваю через отладчик. Т.к. записываю в массив, то там это хорошо видно, в одной ячейке лежат слеши, в другой буква.
Цитата Сообщение от alsav22 Посмотреть сообщение
В какой один символ? Файл покажите.
Прилагаю скриншот содержимого файла и того, что мне пишет отладчик, для полной ясности.
0
Миниатюры
Ofstream дублирует бэк-слеш  
nmcf
5677 / 4987 / 1700
Регистрация: 14.04.2014
Сообщений: 20,325
18.04.2014, 21:10 #19
Отладчик будет переводить в такое представление, потому что другого способа представить спецсимволы нет.
0
alsav22
5428 / 4823 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
18.04.2014, 21:11 #20
Цитата Сообщение от nmcf Посмотреть сообщение
В режиме binary должен всё читать. Только надо read() использовать для этого.
Можно еще посимвольное чтение использовать, или fgets(), она считывает '\n' из файла. Т.е., вариантов масса.
1
nmcf
5677 / 4987 / 1700
Регистрация: 14.04.2014
Сообщений: 20,325
18.04.2014, 21:11 #21
Делай как здесь http://www.cplusplus.com/reference/istream/istream/read/

Читается всё.
0
alsav22
5428 / 4823 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
18.04.2014, 21:17 #22
Цитата Сообщение от nmcf Посмотреть сообщение
потому что другого способа представить спецсимволы нет.
Да никакой это не спецсимвол. ТС руками пишет, в текстовом редакторе: \n, и считает, что это символ новой строки он записал (спецсимвол). А на самом деле это два символа: '\' - код 92, и 'n' - код 110, что отладчик правильно и показывает.
0
Werewolf_RU
8 / 8 / 3
Регистрация: 03.02.2014
Сообщений: 205
Завершенные тесты: 1
18.04.2014, 21:17  [ТС] #23
Чтение с помощью read() заработало на ура, теперь верно считываются переносы строки. Благодарности выставлены, всем инициативным спасибо)
0
alsav22
5428 / 4823 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
18.04.2014, 21:18 #24
Спецсимволы, в текстовом редакторе, не видны.
0
Werewolf_RU
8 / 8 / 3
Регистрация: 03.02.2014
Сообщений: 205
Завершенные тесты: 1
18.04.2014, 21:19  [ТС] #25
Цитата Сообщение от alsav22 Посмотреть сообщение
Да никакой это не спецсимвол. ТС руками пишет, в текстовом файле: \n, и считает, что это символ новой строки он записал (спецсимвол). А на самом деле это два символа: '\' - код 92, и 'n' - код 110.
А я что несколькими сообщениями раньше писал?
Цитата Сообщение от Werewolf_RU Посмотреть сообщение
Собственно, изначально подозревал, что при попытке считать из файла '\n' он считает его просто как 2 отдельных символа слеша и буквы
0
alsav22
5428 / 4823 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
18.04.2014, 21:26 #26
Цитата Сообщение от Werewolf_RU Посмотреть сообщение
что при попытке считать из файла '\n' он считает его просто как 2 отдельных символа слеша и буквы
А как он должен ещё, по-вашему, это читать, когда это и есть два символа, которые не имеют никакого отношения к символу новой строки (спецсимволу).
Поймите одну простую вещь, в текстовом редакторе, символ новой строки не виден, и записать его графическими символами невозможно.
Я же не зря поинтересовался, как файл пишется:
Цитата Сообщение от alsav22 Посмотреть сообщение
Записываете в файл откуда и как?
1
Werewolf_RU
8 / 8 / 3
Регистрация: 03.02.2014
Сообщений: 205
Завершенные тесты: 1
18.04.2014, 21:28  [ТС] #27
Цитата Сообщение от alsav22 Посмотреть сообщение
Поймите одну простую вещь
Уже понял)
0
18.04.2014, 21:28
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.04.2014, 21:28
Привет! Вот еще темы с ответами:

ofstream - C++
Линковка, компиляция без ошибок. При выполнении программы срабатывает условие, почему так? Если лепить файл с программой в директории, то...

ofstream - C++
Привет всем! Народ помогите пожалуйста нубу) Как сделать так чтобы создовался файл с именем которое я наберу с клавиатуры... пытался...

Удвоенный двойной слеш в wstring - C++
Здравствуйте. Делаю так: std::wstring s = argv ; s += L" "; s += argv; Получаю слишком много слешей, как с этим...

Заменить обратный слеш на обычный - C++
К примеру, у нас есть ссылка:...


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

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

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