Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
 Аватар для BirviZ
1 / 1 / 2
Регистрация: 11.10.2015
Сообщений: 82

Кроссплатформенный символ перевода строки

20.07.2017, 14:50. Показов 1301. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть ли в плюсах кросплатформенный символ перевода строки?
Нужно для создания файлов .txt.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.07.2017, 14:50
Ответы с готовыми решениями:

Символ перевода строки не работает
Я полнвй 0 в C++ Купил книгу по VS++ 2010 поставил Express VS 2012, читаю разбираюсь.. пример из книги: CLR console Application...

Std::string и символ перевода строки
Вот такая простейшая программа: #include <stdio.h> #include <string> using namespace std; int main() { char...

Откуда во входном потоке берётся символ перевода строки?
Откуда берётся символ перевода строки после вывода cout? (строки 55-59) Из-за этого у меня не работает нормально getline() и приходится...

14
What a waste!
 Аватар для gray_fox
1610 / 1302 / 180
Регистрация: 21.04.2012
Сообщений: 2,733
20.07.2017, 14:54
BirviZ, если открывать файлы в текстовом режиме, то достаточно '\n'.
0
 Аватар для BirviZ
1 / 1 / 2
Регистрация: 11.10.2015
Сообщений: 82
20.07.2017, 14:57  [ТС]
А при сохранении?
В Джаве, когда похожее приложение писал, '\n' работало только в линуксе.
Под виндой все строки в одну сливались. В винде \r\n надо.
0
What a waste!
 Аватар для gray_fox
1610 / 1302 / 180
Регистрация: 21.04.2012
Сообщений: 2,733
20.07.2017, 15:01
BirviZ, функции чтения/записи преобразуют "системный перевод строки" в '\n' и обратно.
0
331 / 283 / 78
Регистрация: 02.08.2016
Сообщений: 1,008
20.07.2017, 15:03
Пиши \r\n, чтоб в виндовых программах вроде блокнота нормально работало.
0
 Аватар для BirviZ
1 / 1 / 2
Регистрация: 11.10.2015
Сообщений: 82
20.07.2017, 15:10  [ТС]
Суть в том, что мне это приложение нужно не только на винде.
В принципе можно определить препроцессорную константу или както написать с std::endl, но вообще интересно, есть ли такое в плюсах.
зы Плюсы начал учить после Джавы, по этому многое кажется непривычным.
0
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
20.07.2017, 17:10
Цитата Сообщение от BirviZ Посмотреть сообщение
Под виндой все строки в одну сливались. В винде \r\n надо.
В Винде надо текстовый редактор отличный от Блокнота, Akelpad к примеру. Тогда ничего сливаться и не будет.
Ну а так - ну окей, сделаете вы программу которая под Виндой делает \r\n, а под Линуксом просто \n. Потом перетащите файлики с Линукса на Винду... ну и ага, опять криво в Блокноте открываются. Их же никто не сконвертировал.
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
20.07.2017, 17:47
Цитата Сообщение от BirviZ Посмотреть сообщение
Есть ли в плюсах кросплатформенный символ перевода строки?
Нет.
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
20.07.2017, 20:26
Цитата Сообщение от BirviZ Посмотреть сообщение
Есть ли в плюсах кросплатформенный символ перевода строки?
Собственно, в посте #2 тебе уже ответили

Цитата Сообщение от gray_fox Посмотреть сообщение
BirviZ, если открывать файлы в текстовом режиме, то достаточно '\n'.
Переносимый перевод строки организуется не как символ, а как режим открытия файлов. Высокоуровневые интерфейсы (ifstream::open на Си++ или fopen на Си) имеют понятия "бинарный файл" и "текстовый файл". Если файл открывать как текстовый, то при записи в такой файл символа \n под виндами автоматически будут записаны два символа \n\r, а на других системах будет записан только один символ \n. std::endl, думается, выполняет те же функции

Добавлено через 1 минуту
Т.е. подсовыванием двух символов вместо одного (когда это надо) занимаются библиотечные функции (или методы класса)
0
20.07.2017, 20:29

Не по теме:

Цитата Сообщение от Evg Посмотреть сообщение
std::endl, думается, выполняет те же функции
std::endl - это по сути '\n' + fflush.

0
Evg
20.07.2017, 20:30

Не по теме:

Ну да, про std::endl что-то тупанул. Дело ведь не в символе, а в режиме открытия файла

0
331 / 283 / 78
Регистрация: 02.08.2016
Сообщений: 1,008
20.07.2017, 23:32
Цитата Сообщение от Renji Посмотреть сообщение
Ну а так - ну окей, сделаете вы программу которая под Виндой делает \r\n, а под Линуксом просто \n. Потом перетащите файлики с Линукса на Винду... ну и ага, опять криво в Блокноте открываются. Их же никто не сконвертировал.
Можно писать \r\n тогда правда egrep работать так как ожидается не будет, но графические и консольные редакторы поймут.
0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
21.07.2017, 00:00
Цитата Сообщение от BirviZ Посмотреть сообщение
Есть ли в плюсах кросплатформенный символ перевода строки?
Нужно для создания файлов .txt.
'\n'
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
12937 / 6804 / 1821
Регистрация: 18.10.2014
Сообщений: 17,218
21.07.2017, 00:35
Цитата Сообщение от BirviZ Посмотреть сообщение
Суть в том, что мне это приложение нужно не только на винде.
Вы уж определитесь, что вам нежно "кроссплатформенное": приложение или файл.

Текстовый файл не бывает кроссплатформенным. Если в нем концы строк юниксовые, то виндушными они никак сами по себе не станут. И наоборот. Универсального символа перевода строки не существует.

Приложение же - оно и так кроссплатформенно, если вы работаете с текстовыми потоками. Символ '\n' является универсальным символом перевода строки. Он будет автоматически записан в файл в правильном формате для той платформы, для которой скомпилировано приложение.
0
923 / 639 / 198
Регистрация: 08.09.2013
Сообщений: 1,693
22.07.2017, 16:38
Цитата Сообщение от Evg Посмотреть сообщение
Высокоуровневые интерфейсы (ifstream::open на Си++ или fopen на Си) имеют понятия "бинарный файл" и "текстовый файл"
Posix системы, напр. Линукс, не различают бинарные и текстовые файлы. Но это не противоречит тому, что вы сказали: кроссплатформенная программа должна различать текстовые и бинарные файлы при открытии.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.07.2017, 16:38
Помогаю со студенческими работами здесь

Как удалить символ перевода строки, который оставляет cin
Как удалить символ перевода строки, который оставляет cin. Нужно вводить в строчку чаровые переменные, и чтобы они так в строке и...

Написать программу удаления из текстового файла символов перевода строки ‘\n’ и перевода каретки ‘\r’
Здравствуйте,помогите написать программу на подобии этой,только не подсчета,а удаления.Заранее благодарен! #include <stdio.h> int...

Вывести строки, в которых символ «*» встречается не менее 2 раз и заменить символ «*» на символ «_»
День добрый. Имеется условие лабы. Написать программу, в которой с клавиатуры вводится до 10 символьных строк. Вывести строки, в...

Каждый символ строки заменить на следующий за ним, а последний символ строки заменяеть первым
я написал код но не могу разобраться. вот дано : ---------------------------------------------------------- В текстовом файле fin.txt...

Найти символ первой строки, который первым не совпал с одним из символов второй строки. Вывести слово, в которое входит этот символ
Заданы 2 строки, состоящие из слов, разделенных пробелами. Определить местоположение символа первой строки, который первым не совпал с...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru