|
0 / 0 / 0
Регистрация: 24.05.2016
Сообщений: 7
|
|||||||||||
Std::string и символ перевода строки24.05.2016, 13:10. Показов 14214. Ответов 12
Метки нет (Все метки)
Вот такая простейшая программа:
0
|
|||||||||||
| 24.05.2016, 13:10 | |
|
Ответы с готовыми решениями:
12
ошибка error: cannot convert 'std::string {aka std::basic_string<char>}' to 'std::string* {aka std::basic_stri Можно ли в std::string записать Ansi символ (например NUL)? Запрошено преобразование от ‘const std::string*’ к нескалярному типу ‘std::string’ |
|
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
|
|
| 24.05.2016, 13:12 | |
|
0
|
|
|
0 / 0 / 0
Регистрация: 24.05.2016
Сообщений: 7
|
|
| 24.05.2016, 13:14 [ТС] | |
|
символ перевода строки \n на платформе windows это два байта 0x0d и 0x0a
я же привёл программу выше, вот результат её вывода- asd asd 5 4
0
|
|
|
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
|
|
| 24.05.2016, 13:19 | |
|
Вы немного запутались. При редактирование текста в редакторе, новая строка в Windows состоит из двух символов ( /r/n ). Каждый из них занимает 1 байт. В unix`ах же это один символ \n.
0
|
|
|
0 / 0 / 0
Регистрация: 24.05.2016
Сообщений: 7
|
||||||
| 24.05.2016, 13:22 [ТС] | ||||||
|
Вы теоретик? Запустите вышеприведённую программу результат сохраните в файл и посмотрите на практике что из чего состоит
если изменить программу вот так
asd asd 6 5 в hex редакторе видно что \r это 0x0d, \n это 0x0d,0x0a в двух разных средах msvc 2010 и mingw результат одинаковый
0
|
||||||
|
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
|
|
| 24.05.2016, 13:28 | |
|
В t действительно на 1 байт больше, так как учитывается еще символ конца строки ( 0x00 ). string.size() же выводит размер без его учета. Сравнение с sizeof() не корректно. Сравнивайте strlength( t ) и t1.size().
0
|
|
|
0 / 0 / 0
Регистрация: 24.05.2016
Сообщений: 7
|
||||||
| 24.05.2016, 13:38 [ТС] | ||||||
|
хорошо, тогда изменим программу вот так
0
|
||||||
|
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
|
|
| 24.05.2016, 13:38 | |
|
\n = 0x0a, /r = 0x0d. Вы хотя бы заглянули в таблицу ascii...
0
|
|
|
0 / 0 / 0
Регистрация: 24.05.2016
Сообщений: 7
|
|
| 24.05.2016, 13:41 [ТС] | |
|
к сожалению мне приходится работать не с таблицами, а с реальным компьютером, и его поведение отличается от табличного
0
|
|
|
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
|
|||
| 24.05.2016, 13:48 | |||
|
Добавлено через 4 минуты Попробую по простому. Если вы отправите последовательность байт char t[]="asd\n"; на unix, и эта машина сохранит его в файл, открытый в текстовом режиме, то файл будет занимать 4 байта. Если ее отправить на windows машину, и она сделает то же самое, то файл уже будет занимать 5 байт. В случае с маком будут те же 4 байта, но вместо \n будет \r.
0
|
|||
|
0 / 0 / 0
Регистрация: 24.05.2016
Сообщений: 7
|
|
| 24.05.2016, 13:57 [ТС] | |
|
Спасибо, понятно
на linux кстати вывод в текстовый файл результата printf("/n") занимает 0 байт
0
|
|
|
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
|
|
| 24.05.2016, 14:02 | |
|
Это странно, потому что у меня он занимает 1 байт.
0
|
|
|
0 / 0 / 0
Регистрация: 24.05.2016
Сообщений: 7
|
|
| 24.05.2016, 14:05 [ТС] | |
|
"centos 6, ноль байт, перепроверил ещё раз"
нет, всё правильно, 1 байт, это я сам ошибся, прошу прощения, вместо ./a.out >log написал a.out >log и за панелями миднайт командера не увидел ошибку "команда не найдена"
0
|
|
| 24.05.2016, 14:05 | |
|
Помогаю со студенческими работами здесь
13
Кроссплатформенный символ перевода строки Символ перевода строки не работает Строки через std::string Std::cin, символ новой строки
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|
Символьное дифференцирование
igorrr37 13.02.2026
/ *
Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет
значение производной при заданном х
Логарифм записывается как: (x-2)log(x^2+2) -. . .
|
Камера 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 с альфа-каналом (с прозрачным. . .
|