Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / конкатенация строки в одну переменную / 25 сообщений из 60, страница 1 из 3
01.07.2017, 18:46
    #39480945
Андрей159
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
конкатенация строки в одну переменную
Не могу понять почему так гиморойно присвоить одно значение переменной типа "текст" и прибавить к нему еще текст и еще текстовую переменную. Во всех языках это обычно. А на С++ меня аж бесит.

s=ВводИнформацииТипаТекст(ТОЛЬКО НЕ КОНСОЛЬ!!! достали кусок текста из файла, веб страницы - неважно)

s=s + " еще текст" + " еще текст результат от парсинга" + функцияСВозращениемТекста + число

Это как по проще на С++ делается чтоб не материться?
...
Рейтинг: 0 / 0
01.07.2017, 20:35
    #39480958
Siemargl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
конкатенация строки в одну переменную
Андрей159,

sprintf
...
Рейтинг: 0 / 0
01.07.2017, 20:41
    #39480960
Siemargl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
конкатенация строки в одну переменную
А если по модному, молодежному то std::stringstream (или более старый поток std::strstream << "XX" << std::ends;)
https://habrahabr.ru/post/131977/
...
Рейтинг: 0 / 0
01.07.2017, 20:58
    #39480964
Sergey_rb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
конкатенация строки в одну переменную
А почему во всех недоязыках можно просто склеить через + или другой символ, а в брутальном С++ нельзя?
...
Рейтинг: 0 / 0
01.07.2017, 21:02
    #39480965
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
конкатенация строки в одну переменную
Sergey_rbА почему во всех недоязыках можно просто склеить через + или другой символ, а в брутальном С++ нельзя?
Потому что это тормоз. Брутальных тормозов не бывает.
...
Рейтинг: 0 / 0
01.07.2017, 21:21
    #39480970
Sergey_rb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
конкатенация строки в одну переменную
Dima TSergey_rbА почему во всех недоязыках можно просто склеить через + или другой символ, а в брутальном С++ нельзя?
Потому что это тормоз. Брутальных тормозов не бывает.

или это принципиально невозможно?
...
Рейтинг: 0 / 0
01.07.2017, 21:28
    #39480972
Siemargl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
конкатенация строки в одну переменную
Sergey_rbDima Tпропущено...

Потому что это тормоз. Брутальных тормозов не бывает.

или это принципиально невозможно?
Как раз в С++ это принципиально возможно, потому что есть operator overloading, в отличие от многих других.

Но,... не нужно. Уже заложен смысл

Есть только сложение строк
http://www.cplusplus.com/reference/string/string/operator /

Хочешь - допиши сам.
...
Рейтинг: 0 / 0
01.07.2017, 21:29
    #39480973
Siemargl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
конкатенация строки в одну переменную
Лично мне в операции сложении не хватает возможностей форматирования, которые есть sprintf
...
Рейтинг: 0 / 0
01.07.2017, 21:35
    #39480975
Siemargl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
конкатенация строки в одну переменную
Код: plaintext
1.
stream << settbase(16) << setprecision(3) << xx;

мне неудобно
...
Рейтинг: 0 / 0
01.07.2017, 21:36
    #39480976
Anatoly Moskovsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
конкатенация строки в одну переменную
Андрей159s=ВводИнформацииТипаТекст(ТОЛЬКО НЕ КОНСОЛЬ!!! достали кусок текста из файла, веб страницы - неважно)

s=s + " еще текст" + " еще текст результат от парсинга" + функцияСВозращениемТекста + число

Это как по проще на С++ делается чтоб не материться?

А в чем проблема-то?
Код: plaintext
1.
2.
std::string s = "текст";
s=s + " еще текст" + " еще текст результат от парсинга" + std::to_string(123);
...
Рейтинг: 0 / 0
01.07.2017, 21:37
    #39480977
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
конкатенация строки в одну переменную
Sergey_rbDima Tпропущено...

Потому что это тормоз. Брутальных тормозов не бывает.

или это принципиально невозможно?
Ты пойми что A+B+C это сначала выделить память под A+B, затем выделить под (A+B) + С, т.е. это тормоз, поэтому sprintf, где сразу выделится память под итого. С++ под тормоза не заточен.
...
Рейтинг: 0 / 0
01.07.2017, 21:40
    #39480978
Sergey_rb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
конкатенация строки в одну переменную
Dima TSergey_rbпропущено...


или это принципиально невозможно?
Ты пойми что A+B+C это сначала выделить память под A+B, затем выделить под (A+B) + С, т.е. это тормоз, поэтому sprintf, где сразу выделится память под итого. С++ под тормоза не заточен.

А разве string не так работает?
...
Рейтинг: 0 / 0
01.07.2017, 23:57
    #39480998
Siemargl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
конкатенация строки в одну переменную
Sergey_rbDima Tпропущено...

Ты пойми что A+B+C это сначала выделить память под A+B, затем выделить под (A+B) + С, т.е. это тормоз, поэтому sprintf, где сразу выделится память под итого. С++ под тормоза не заточен.

А разве string не так работает?
нет. это две последовательные несвязанные операции.
...
Рейтинг: 0 / 0
02.07.2017, 00:09
    #39481000
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
конкатенация строки в одну переменную
Dima Tпоэтому sprintf, где сразу выделится память под итого

Не выделится сразу. Это тоже будут двухступенчатые тормоза, помноженные на парсинг строки
формата.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
02.07.2017, 00:38
    #39481008
Siemargl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
конкатенация строки в одну переменную
Dimitry SibiryakovDima Tпоэтому sprintf, где сразу выделится память под итого

Не выделится сразу. Это тоже будут двухступенчатые тормоза, помноженные на парсинг строки
формата.

Ты выделишь память один раз перед вызовом sprintf'a. А при плюсовании - столько раз, сколько аргументов.

Тормоза простого парсинга невелики, и уж гораздо быстрее сис.вызова выделения памяти
...
Рейтинг: 0 / 0
02.07.2017, 00:38
    #39481009
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
конкатенация строки в одну переменную
+= или append сделать религия не позволяет?

у брутальных кроме + есть ещё StringBuffer/StringBuilder
...
Рейтинг: 0 / 0
02.07.2017, 00:39
    #39481010
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
конкатенация строки в одну переменную
Siemarglи уж гораздо быстрее сис.вызова выделения памяти
это вряд ли системный вызов - просто выделение памяти из локальной кучи
...
Рейтинг: 0 / 0
02.07.2017, 00:52
    #39481013
Siemargl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
конкатенация строки в одну переменную
ИзопропилSiemarglи уж гораздо быстрее сис.вызова выделения памяти
это вряд ли системный вызов - просто выделение памяти из локальной кучиПредлагаю посмотреть исходники RTL
...
Рейтинг: 0 / 0
02.07.2017, 01:29
    #39481019
Андрей159
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
конкатенация строки в одну переменную
кому она теперь надо эта скорость и эта память... разве что если на Arduino свой сервер писать.. И так система все убивает и память и хард и скорость. В 2005 году я думал после 7рки Виндовс выйдет какой-то 3D виндовс. Вышло какое-то гавно, после него еще лучше и потом не знаю что это было такое, куда пропали тени от элементов. 10лет прошло. Память под систему увеличилась в двое, а если подумать виндовс это набор элементов и готового функционала для программистов. В итоге что за 10 лет изменилось в лучшую сторну. Разве что начали следить и замахивать обновлением особенно когда нужно срочно выключить и кудато идти. А борьба с вирусами только на словах. Автозапуск отключил и 8 лет без антивирусника и без проблем, а они что-то там борятся. Только фоновые приложения увеличились от 18 к 60. О расходе памяти можно точно не беспокоится.
Спасибо за std::string s
...
Рейтинг: 0 / 0
02.07.2017, 01:32
    #39481022
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
конкатенация строки в одну переменную
Андрей159кому она теперь надо эта скорость и эта память..
представь себе - нужна

не только в танчики люди играют
...
Рейтинг: 0 / 0
02.07.2017, 01:35
    #39481023
Андрей159
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
конкатенация строки в одну переменную
P.S. а что говорить а Питоне, в котором чтоб написать цыкл от 1 к 100 нужно использовать массив от 1 к 100. Это ж как интересно на машинном коде все будет работать?))))) На этом уроке я и закончил свое обучение начал гуглить все о скорости Питона и сравнении. Сам потестил также. Ой и медляра... Логика не подвела. Но рейтинг языка зашкаливает. Так и не понял в чем прикол популярности.
...
Рейтинг: 0 / 0
02.07.2017, 01:36
    #39481026
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
конкатенация строки в одну переменную
Андрей159,

не путай массив с генератором
...
Рейтинг: 0 / 0
02.07.2017, 04:21
    #39481043
Sergey_rb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
конкатенация строки в одну переменную
Dimitry SibiryakovDima Tпоэтому sprintf, где сразу выделится память под итого

Не выделится сразу. Это тоже будут двухступенчатые тормоза, помноженные на парсинг строки
формата.


А сколько это в минутах?
...
Рейтинг: 0 / 0
02.07.2017, 11:54
    #39481118
Anatoly Moskovsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
конкатенация строки в одну переменную
SiemarglЛично мне в операции сложении не хватает возможностей форматирования, которые есть sprintf
Siemargl
Код: plaintext
1.
stream << settbase(16) << setprecision(3) << xx;


мне неудобно

http://www.boost.org/doc/libs/1_64_0/libs/format/doc/format.html#examples
...
Рейтинг: 0 / 0
02.07.2017, 14:49
    #39481177
Андрей159
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
конкатенация строки в одну переменную
а байт из значением 0 чтоб сохранить в переменную нужно еще и экранировать?

А каким вы пользуетесь самым быстрым, но может не самым удобным способом? (в приоритет быстродействия)
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / конкатенация строки в одну переменную / 25 сообщений из 60, страница 1 из 3
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]