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

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

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

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

18.04.2014, 20:35. Просмотров 673. Ответов 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
nmcf
5353 / 4673 / 1563
Регистрация: 14.04.2014
Сообщений: 18,624
18.04.2014, 20:39 #2
Где они задублировались? И текст программы представь.
0
Werewolf_RU
8 / 8 / 3
Регистрация: 03.02.2014
Сообщений: 205
Завершенные тесты: 1
18.04.2014, 20:43  [ТС] #3
C++
1
2
3
4
5
6
7
8
ifstream input;
input.open("c:\\input.txt");
char buf[100];
while(!input.eof())
        {
            input>>buf;
            strcat(test, buf);strcat(test, " ");
        }
Если в файле попадается символ '\', то он копируется в буфер как "\\"
Собственно, изначально подозревал, что при попытке считать из файла '\n' он считает его просто как 2 отдельных символа слеша и буквы, но так как не нашёл иного варианта решил попробовать.
0
alsav22
5425 / 4820 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
18.04.2014, 20:44 #4
Цитата Сообщение от Werewolf_RU Посмотреть сообщение
что при чтении из файла путём использования потока ofstream
ofstream - это для записи, а не для чтения.
0
Werewolf_RU
8 / 8 / 3
Регистрация: 03.02.2014
Сообщений: 205
Завершенные тесты: 1
18.04.2014, 20:46  [ТС] #5
Цитата Сообщение от alsav22 Посмотреть сообщение
ofstream - это для записи, а не для чтения
Задумался при написании темы, каюсь. В коде такого косяка нет.
0
alsav22
5425 / 4820 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
18.04.2014, 20:47 #6
Записываете в файл откуда и как?
0
Werewolf_RU
8 / 8 / 3
Регистрация: 03.02.2014
Сообщений: 205
Завершенные тесты: 1
18.04.2014, 20:51  [ТС] #7
Цитата Сообщение от alsav22 Посмотреть сообщение
Записываете в файл откуда и как?
Цель в том, чтобы можно было открывать текстовый файл, в который что-то записано из другого текстового редактора. А при такой записи у нас символы \ и n действительно запишутся как 2 разных. Так что вопрос в том, как можно в обычном текстовом редакторе обозначить символ переноса строки.
0
nmcf
5353 / 4673 / 1563
Регистрация: 14.04.2014
Сообщений: 18,624
18.04.2014, 20:56 #8
Если тебе надо читать всё как есть включая спецсимволы, открывай файл как бинарный.
0
Werewolf_RU
8 / 8 / 3
Регистрация: 03.02.2014
Сообщений: 205
Завершенные тесты: 1
18.04.2014, 20:59  [ТС] #9
Цитата Сообщение от nmcf Посмотреть сообщение
открывай файл как двоичный
C++
1
2
3
4
5
6
7
8
ifstream input;
        input.open("c:\\input.txt", ios::binary);
        char buf[100];
        while(!input.eof())
        {
            input>>buf;
            strcat(SendR, buf);strcat(SendR, " ");
        }
В таком случае та же история. В один символ записывается \\ в другой n.
0
alsav22
5425 / 4820 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
18.04.2014, 21:00 #10
Цитата Сообщение от Werewolf_RU Посмотреть сообщение
у нас символы \ и n действительно запишутся как 2 разных
Они и есть разные.
Цитата Сообщение от Werewolf_RU Посмотреть сообщение
Так что вопрос в том, как можно в обычном текстовом редакторе обозначить символ переноса строки.
Не нужно его обозначать, он и так там есть (при нажатии Enter ставится), только не имеет графического отображения.
0
nmcf
5353 / 4673 / 1563
Регистрация: 14.04.2014
Сообщений: 18,624
18.04.2014, 21:01 #11
Они не разные, \n - один символ (байт). Он, наверное, в отладчике смотрит.
Автор, ты как смотришь, что прочитано? Через отладчик?
0
alsav22
5425 / 4820 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
18.04.2014, 21:03 #12
Цитата Сообщение от Werewolf_RU Посмотреть сообщение
В таком случае та же история. В один символ записывается \\ в другой n.
В какой один символ? Файл покажите.

Добавлено через 1 минуту
Цитата Сообщение от nmcf Посмотреть сообщение
Они не разные
'\n' - код 10. '\' - код 47.
0
Werewolf_RU
8 / 8 / 3
Регистрация: 03.02.2014
Сообщений: 205
Завершенные тесты: 1
18.04.2014, 21:03  [ТС] #13
Цитата Сообщение от alsav22 Посмотреть сообщение
принажатии Enter ставится
Пробовал. Если он там и ставится при нажатии enter, то поток его игнорирует(а верней останавливается на нём) как и на любом другом разделителе строк - пробелы, табуляции и т.п. Потому я и загружаю всё в цикле. Если есть способ "вытащить" файл целиком так, чтобы поток считал разделители чем-то обычным, прошу мне о нём рассказать)
0
alsav22
5425 / 4820 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
18.04.2014, 21:04 #14
Цитата Сообщение от nmcf Посмотреть сообщение
Он, наверное, в отладчике смотрит.
Сейчас разберёмся.
0
nmcf
5353 / 4673 / 1563
Регистрация: 14.04.2014
Сообщений: 18,624
18.04.2014, 21:04 #15
В текстовом файле "новая строка" - один символ, это представление строки в C++ нотации будет с двумя.
0
18.04.2014, 21:04
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.04.2014, 21:04
Привет! Вот еще темы с ответами:

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

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

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

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


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

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

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