powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / C++ [игнор отключен] [закрыт для гостей] / Несколько глупых вопросов по std::string и std::wstring
25 сообщений из 125, страница 2 из 5
Несколько глупых вопросов по std::string и std::wstring
    #40017296
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ResourceSpace,
Ты тролль?
Вопрос был такой - Зачем бороться и удалять символы конца строки?
Ты ответил
авторВ данном тексте, написанном и отправленным на форум вами - содержатся символы "\r" и "\n".
Если выделить текст любой из ваших цитат и скопировать в буфер обмена - в буфере обмена тоже будут содержаться символы "\r" и "\n".
Если вставить текст из буфера обмена в программу "Блокнот" и сохранить в файл - в дочернем окне "Блокнота" с классом EDIT будет установлен текст, содержащий символы "\r" и "\n", и в файле тоже будут символы "\r" и "\n".
Для вас это сюрприз..?
Не врубился что спрашивают в вопросе?
...
Рейтинг: 0 / 0
Несколько глупых вопросов по std::string и std::wstring
    #40017319
ResourceSpace
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Что значит "зачем"? Потому что в тексте они есть по факту, а мне нужен текст без них.
Абсолютно нормальные символы для многострочного текста. И с чего бы им самим куда-то там "пропадать"?
Неужели не достаточно частая задача - сделать тексту Trim()?

Да хоть такое для теста взять, предположим вот чужой код:
Код: plaintext
1.
2.
3.
4.
5.
int wmain(int argc, wchar_t* argv[]) {
	std::wstring str = L"Однажды\r\nВ студёную зимнюю пору,\r\nЯ из лесу вышел,\r\nБыл сильный мороз...  \t   \r\n   \r\n   \r\n   \r\n";
	myFunc(str);
	return 0;
}

Не важно откуда оно там взялось, передали так из другого места. Мой вопрос был - как лишнее убирать внутри моей myFunc().


Cerebrum , спасибо огромное! Пошёл читать... :3
...
Рейтинг: 0 / 0
Несколько глупых вопросов по std::string и std::wstring
    #40017321
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ResourceSpaceВ данном тексте, написанном и отправленным на форум /_вами_/ - содержатся символы "\r" и "\n".
Если выделить текст любой из ваших цитат и скопировать в буфер обмена - в буфере обмена
тоже будут содержаться символы "\r" и "\n".
Если вставить текст из буфера обмена в программу "Блокнот" и сохранить в файл - в дочернем
окне "Блокнота" с классом EDIT будет установлен текст, содержащий символы "\r" и "\n", и в
файле тоже будут символы "\r" и "\n".
Для вас это сюрприз..?

Лично для меня сюрприз, что ты в этом списке нигде не упомянул std::string. Неужели таки
дошло, что оно с "данным текстом" никак не соотносится?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Несколько глупых вопросов по std::string и std::wstring
    #40017322
ResourceSpace
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я могу на любом из перечисленных этапов получать текст - хоть из сети, хоть из буфера обмена, хоть из окна, хоть из файла - и хранить в переменной типа std::wstring.
С чего бы "\r" и "\n" куда-то при этом пропадали?
...
Рейтинг: 0 / 0
Несколько глупых вопросов по std::string и std::wstring
    #40017326
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ResourceSpaceС чего бы "\r" и "\n" куда-то при этом пропадали?

Обычно они пропадают "с процесса получения текста". Ты не поверишь, но std::string это тип
для хранения СТРОКИ . Одной строки. И все вменяемые функции кладут в переменные
данного типа ОДНУ строку.

Но, конечно, ты волен писать собственные функции любой степени невменяемости.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Несколько глупых вопросов по std::string и std::wstring
    #40017330
ResourceSpace
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как же по вашему хранится многострочный текст? Вы не в курсе что в WinAPI многострочный текст это один единый массив символов? И во всех нормальных языках тоже?
https://en.cppreference.com/w/cpp/string/basic_string The class template basic_string stores and manipulates sequences of char -like objectsВ вашей же справке написано - не для "одной строки", а для "последовательности символов".
...
Рейтинг: 0 / 0
Несколько глупых вопросов по std::string и std::wstring
    #40017331
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ResourceSpace
Не важно откуда оно там взялось, передали так из другого места.

Ну, во первых, профи программист а не тупой кодировщик всегда смотрит на ранг выше и ниже задачу.
Во вторых, мы народ любознательный, и нам просто интересно. Какой идиот дает тебе на вход 20 Enter.
Справедливо?
...
Ну и если ты трижды повторишь: "так надо!" - от тебя отстанут.
Мало ли чудаков на свете.
...
Рейтинг: 0 / 0
Несколько глупых вопросов по std::string и std::wstring
    #40017333
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ResourceSpaceКак же по вашему хранится многострочный текст?

Так, как требует того задача. От потока байт до массива строк.

ResourceSpaceВы не в курсе что в WinAPI многострочный текст это один единый массив символов?

Я в курсе, что в WinAPI вообще нет понятия "текст", а только тот самый "массив символов".
А ты понимаешь, что WinAPI это НЕ С++?

ResourceSpaceИ во всех нормальных языках тоже?

Потребовать что ли от модератора тебя забанить за такое наглое размахивание чужим уставом?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Несколько глупых вопросов по std::string и std::wstring
    #40017335
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, по мотивам.
Есть в МосЭнерго личный кабинет. И там есть окошко для обращения граждан.
Дак вот, при вводе конечно стараешься формулировать мысль))), оформлять абзацы.
А при сохранении получаем сплошняком текст без концов строк.
Хорошо пробелы оставили))).
Уж не знаю. Может место экономят. Мож экран.
...
Рейтинг: 0 / 0
Несколько глупых вопросов по std::string и std::wstring
    #40017337
ResourceSpace
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я выдумал и привёл аж четыре реальных примера откуда оно могло взяться - этого недостаточно? Особенно учитывая что к непосредственно вопросу это не имело отношения.
Ладно, выдумал пятый пример - прочитать текст из реестра. Технически там нет явных запретов/ограничений на многострочный REG_SZ.



Моя задача и требует - идентично WinAPI.

Хорошо, хорошо... "И в любых языках в которых есть встроенный тип данных строка " - лучше?
...
Рейтинг: 0 / 0
Несколько глупых вопросов по std::string и std::wstring
    #40017339
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ResourceSpace
Я выдумал

ResourceSpace
реальных примера
))))) LOL
Как у тебя с логикой?
Выдумал или реальных?
Я вот выше не выдуманный пример привел.
...
Рейтинг: 0 / 0
Несколько глупых вопросов по std::string и std::wstring
    #40017341
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ResourceSpace
выдумал пятый пример
а зачем там то удалять?
В реестре каждый знак значимый.
...
Рейтинг: 0 / 0
Несколько глупых вопросов по std::string и std::wstring
    #40017343
ResourceSpace
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я сказал прочитать из реестра, а не перезаписывать в нём.

Прочитали текущее текстовое содержимое из буфера обмена. Там какой-то текст и после него 20 Enter. Кто-то может специально или случайно скопировать в буфер 20 Enter? Может.
Да, вполне себе реальный пример. Теперь надо убрать нафик 20 Enter и перевести в нижний регистр. И поискать какую-нибудь подстроку.
Тож самое из реестра. Из файла. Из стрима. Источник не важен - мы его не контролируем.

Надо было наверное на каждый мини-вопрос отдельную тему создавать, а то в один вцепились, другие вообще не заметили...
...
Рейтинг: 0 / 0
Несколько глупых вопросов по std::string и std::wstring
    #40017345
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ResourceSpaceЯ выдумал и привёл аж четыре реальных примера откуда оно могло взяться - этого недостаточно?

Что "оно"? Ты привёл примеры откуда мог взяться массив символов. std::string оттуда
взяться никак не мог.

ResourceSpaceЛадно, выдумал пятый пример - прочитать текст из реестра. Технически там нет явных
запретов/ограничений на многострочный REG_SZ.

Технически нет в природе функций, позволяющих получить из реестра std::string.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Несколько глупых вопросов по std::string и std::wstring
    #40017346
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PetroNotC Sharp,>не понимает "<>"
Поясни, о чем речь?
...
Рейтинг: 0 / 0
Несколько глупых вопросов по std::string и std::wstring
    #40017347
d7i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Весь сыр-бор разгорелся из-того, что ТС по-сути талдычит о буфере, который он пытается уложить в строковый тип...
И ясно, что разные функции обработки строк тут не канают.
А по-моему нужно взять буфер из TCHAR и тогда всё станет более-менее ясно.
Код: plaintext
1.
2.
3.
4.
5.
#ifdef _UNICODE
typedef wchar_t TCHAR;
#else
typedef char TCHAR;
#endif
...
Рейтинг: 0 / 0
Несколько глупых вопросов по std::string и std::wstring
    #40017348
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я пишу:
PetroNotC Sharp
а зачем там то удалять?[спецсимволы предварительно вычитав оттуда]

ТС отвечает:
ResourceSpace
Я сказал прочитать из реестра, а не перезаписывать в нём.

)))))
...
Рейтинг: 0 / 0
Несколько глупых вопросов по std::string и std::wstring
    #40017349
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ResourceSpace
Кто-то может специально или случайно скопировать в буфер 20 Enter? Может.
не люблю прогеров ставящих себе дурацкие задачи.
"Может обезьяна тупо стуча по печатной машинке набить Войну и мир? Может!
...
Рейтинг: 0 / 0
Несколько глупых вопросов по std::string и std::wstring
    #40017350
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ъъъъъ
PetroNotC Sharp,>не понимает "<>"
Поясни, о чем речь?
поясняю.
ТС почему то борется если ему пришло 20 Enter.
А если пришло 20 тире то не борется.
Правильно ли это?
...
Рейтинг: 0 / 0
Несколько глупых вопросов по std::string и std::wstring
    #40017351
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ResourceSpaceПрочитали текущее текстовое содержимое из буфера обмена. Там какой-то текст и после него
20 Enter. Кто-то может специально или случайно скопировать в буфер 20 Enter? Может.

Может, но у тебя ошибка уже в первом посыле "прочитали". В С++ нет функций для работы с
буфером обмена, прочитать его невозможно.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Несколько глупых вопросов по std::string и std::wstring
    #40017352
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ResourceSpace
Ну вот из того что я нагуглил, но работает почему-то частично:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
void toLower(std::wstring& str) { // req: <algorithm>
	std::transform(str.begin(), str.end(), str.begin(), std::tolower);
}

void myFunc(std::wstring& str) {
	// str приходит извне, от меня её содержимое не зависит никак;
	wprintf(L"%ls\n", str.c_str()); // допустим, выведет такое: CHEck ПРОверка
	toLower(str);
	wprintf(L"%ls\n", str.c_str()); // тогда тут выведет уже: check ПРОверка
	// и чего оно кириллицу не тронуло, а? надо чтоб было: check проверка
	// при этом - украинский, немецкий и греческий - тоже вполне может быть в тексте
}

Не понимаю, а словами без кода не было понятно что требуется?

Не было понятно. Лично я для такой хери С++ не использую, т.к. знаю что он это не умеет, есть высокоуровневые языки где все это из коробки. Давай отдельный топик поднимем про то как сделать мультиязычный tolower, это отдельная сложная задача если поставить ее кросплатформно!
ResourceSpace
Ещё я спрашивал про конвертацию std::string <~> std::wstring - нормально ли будет через MultiByteToWideChar и WideCharToMultiByte, или в самой этой "std::" для этого уже что-то есть?

Только MultiByteToWideChar и WideCharToMultiByte если в виндавсе, а в "std::" этого вообще нет.
...
Рейтинг: 0 / 0
Несколько глупых вопросов по std::string и std::wstring
    #40017354
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ResourceSpace
Что значит "зачем"? Потому что в тексте они есть по факту, а мне нужен текст без них.
Абсолютно нормальные символы для многострочного текста. И с чего бы им самим куда-то там "пропадать"?
Неужели не достаточно частая задача - сделать тексту Trim()?

Да хоть такое для теста взять, предположим вот чужой код:
Код: plaintext
1.
2.
3.
4.
5.
int wmain(int argc, wchar_t* argv[]) {
	std::wstring str = L"Однажды\r\nВ студёную зимнюю пору,\r\nЯ из лесу вышел,\r\nБыл сильный мороз...  \t   \r\n   \r\n   \r\n   \r\n";
	myFunc(str);
	return 0;
}

Не важно откуда оно там взялось, передали так из другого места. Мой вопрос был - как лишнее убирать внутри моей myFunc().


Cerebrum , спасибо огромное! Пошёл читать... :3

А что по твоему лишнее? Ты конкретно покажи как оно без лишнего должно быть. Допустим в итоге так получится
Код: plaintext
1.
L"ОднаждыВ студёную зимнюю пору,Я из лесу вышел,Был сильный мороз...  \t            ";

Это правильно?
...
Рейтинг: 0 / 0
Несколько глупых вопросов по std::string и std::wstring
    #40017357
ResourceSpace
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я же в первом сообщении объяснял - приложение для Windows на C++.
Plain-WinAPI-код. Компилятор C++ MSVC. Единственный источник каких-либо входящих данных - функции WinAPI.
А там - голый wchar_t buf[] - который мне жутко надоел, даже конкатенацию не сделать. Просто заменил хранение как std::wstring.

Либо используем промежуточный wchar_t buf[], либо сразу помещаем в std::wstring через buf.c_str() - вполне себе можно получить текст, и из реестра, и откуда угодно.

ъъъъъ
Поясни, о чем речь?
Я говорю:
ResourceSpace
функции ltrim() / rtrim() у меня не компилится, не понимает "<>" для "std::isspace". Надо что-то подключить?
ResourceSpace
пример trim'ов со stackoverflow по ссылке выше, как я уже писал - просто не компилится, вероятнее всего нужен ещё #include, но я не нашёл какой.
Вот тот код со stackoverflow:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
std::string& ltrim(std::string& str) {
	auto it2 = std::find_if(str.begin(), str.end(), [](char ch) { return !std::isspace<char>(ch, std::locale::classic()); });
	str.erase(str.begin(), it2);
	return str;
}

std::string& rtrim(std::string& str) {
	auto it1 = std::find_if(str.rbegin(), str.rend(), [](char ch) { return !std::isspace<char>(ch, std::locale::classic()); });
	str.erase(it1.base(), str.end());
	return str;
}

Вот ошибка компиляции:MSVSПредупреждение C4551 в вызове функции отсутствует список аргументов
Ошибка C2062 тип "char" не требуетсяЭти пишет на каждый "char>" после "isspace<". При этом во всплывашке " использование имени типа не допускается ".
Да 98% что какого-то #include не хватает, как бы выяснить какого именно?


Dima T
Допустим в итоге так получится
Код: plaintext
1.
L"ОднаждыВ студёную зимнюю пору,Я из лесу вышел,Был сильный мороз...  \t            ";

Это правильно?
Такие стандартные штуки как TrimLeft и TrimRight удаляет пробельные символы только с одного края:
Код: plaintext
1.
L"Однажды\r\nВ студёную зимнюю пору,\r\nЯ из лесу вышел,\r\nБыл сильный мороз...";

Но желательно до такого вида:
Код: plaintext
1.
L"однажды\nв студёную зимнюю пору,\nя из лесу вышел,\nбыл сильный мороз...";
...
Рейтинг: 0 / 0
Несколько глупых вопросов по std::string и std::wstring
    #40017358
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сомнений нет: ТС - тролль.
...
Рейтинг: 0 / 0
Несколько глупых вопросов по std::string и std::wstring
    #40017359
ResourceSpace
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
С чего вдруг? Вы просили пояснить проблему - я пояснил.
Могу в виде скриншота показать:
...
Рейтинг: 0 / 0
25 сообщений из 125, страница 2 из 5
Форумы / C++ [игнор отключен] [закрыт для гостей] / Несколько глупых вопросов по std::string и std::wstring
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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