2 / 2 / 0
Регистрация: 24.02.2018
Сообщений: 65
|
|
1 | |
Wstring, string и байты21.06.2020, 13:42. Показов 682. Ответов 5
Метки нет (Все метки)
Приветствую, столкнулся с проблемой конвертирования std::string в std::wstring. Если бы строка содержала обычный текст, все было бы просто, но в строке у меня находятся байты, считанные из файла (файл бинарный). Эта конвертация нужна для составления запроса для отправки его на сервер по HTTP протоколу, ну и multipart/form-data - соответственно. И когда я конвертирую байты в std::wstring сервер отказывается сохранять файл с ошибкой 3 (отправлена только часть файла), или сохраняет его, но с лишними символами вначале. Есть ли какой-нибудь способ преобразовать байты из std::string в std::wstring?
0
|
21.06.2020, 13:42 | |
Ответы с готовыми решениями:
5
Из string в wstring Сконвертировать string в wstring Перевод string в wstring Корректен ли каст из string в wstring? |
19409 / 10028 / 2443
Регистрация: 30.01.2014
Сообщений: 17,678
|
|
21.06.2020, 13:45 | 2 |
Frotie, а "байты"-то в какой кодировке?
Добавлено через 1 минуту Frotie, или в этих байтах не текст? Зачем тогда вам wstring?
0
|
2 / 2 / 0
Регистрация: 24.02.2018
Сообщений: 65
|
|
21.06.2020, 13:57 [ТС] | 3 |
DrOffset, у меня запрос на сервер в wstring. В байтах может быть любой текст в любой кодировке, или не текст вовсе (использую не один тип файлов)
0
|
19409 / 10028 / 2443
Регистрация: 30.01.2014
Сообщений: 17,678
|
|
21.06.2020, 15:10 | 4 |
Зачем? Если нужно отправлять байты - отправляйте char. Если сервер ждет wchar, то есть подозрение, что он все-таки ждет текст в юникоде.
Без деталей помочь вам невозможно. Добавлено через 2 минуты 1) Как конвертируете? 2) Как рассчитываете размер отправляемого? Добавлено через 20 минут также интересно было бы узнать: 1) какими средствами отправляете (в том числе как формируются HTTP-запросы, библиотечными средствами или вручную)? 2) сервер готовый или самописный? Добавлено через 11 минут Из предположения, что это все-таки произвольные байты, а не текст, то еще хорошо, чтобы был ответ на вопрос что вы собираетесь делать, если количество байтов в string не кратно размеру wchar? т.е. например в string 33 байта, размер wchar_t под виндой 2 байта. 33 на 2 нацело не делится. Значит последний wchar_t-элемент будет содержать только 1 значащий байт из изначальной последовательности, а второй байт что будет содержать? Нуль? Если так, то как принимающая сторона поймет, что эти нули - это незначащие, лишние нули? Никак. Потом встатет вопрос об endianes всего этого добра, т.к. возникает необходимость определять что такое "второй" байт - старший или младший? Это не говоря уже о том, что wchar_t имеет платформозависимый размер (может быть, например и 2, и 4 байта).
0
|
2 / 2 / 0
Регистрация: 24.02.2018
Сообщений: 65
|
|
21.06.2020, 15:15 [ТС] | 5 |
DrOffset, Из вашего ответа понял, что лучше хранить запрос в std::string и при необходимости конвертировать в std::wstring
0
|
374 / 317 / 65
Регистрация: 14.10.2014
Сообщений: 1,348
|
|
21.06.2020, 22:20 | 6 |
А почему сразу в std::wstring не хранить, тогда и конвертировать не придётся?
Внутри стринга обычный однобайтный чар (шаблонный тип) Внутри дубльстринга двухбайтный (или даже более) чар (шаблонный тип) Конвертнуть одно в другое конечно можно Но не уверен, что это правильно.
0
|
21.06.2020, 22:20 | |
21.06.2020, 22:20 | |
Помогаю со студенческими работами здесь
6
Из wchar_t* в wstring или в string Перевод из string в wstring. Неправильная кодировка Опять мучаюсь с конвертацией string в wstring По поводу wchar_t, wstring, char, string и кодировок Не могу поместить в переменную wstring и string русское слово Как правильно перевести std::wstring в std::string ? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи | |||||
Как использовать комментарии в JSON
InfoMaster 18.01.2025
JSON (JavaScript Object Notation) представляет собой легкий и широко используемый формат обмена данными, который стал стандартом де-факто для веб-приложений и программных интерфейсов. При работе с. . .
|
Как заставить git pull перезаписать локальные файлы в Git
InfoMaster 18.01.2025
Проблема перезаписи локальных файлов в Git
При работе с системой контроля версий Git разработчики часто сталкиваются с ситуацией, когда необходимо синхронизировать локальный репозиторий с. . .
|
Что значит оператор --> в C++ и для чего он нужен
InfoMaster 18.01.2025
В языке программирования C++ оператор -> (стрелка) является одним из фундаментальных элементов синтаксиса, обеспечивающим удобный доступ к членам структур и классов через указатели. Этот оператор был. . .
|
Как отменить git add до коммита в Git
InfoMaster 18.01.2025
В современной разработке программного обеспечения система контроля версий Git играет ключевую роль в управлении изменениями кода. Одной из наиболее частых операций, с которой сталкиваются. . .
|
Какой MIME-тип JSON указывать и когда
InfoMaster 18.01.2025
В современном мире веб-разработки формат JSON (JavaScript Object Notation) стал неотъемлемой частью обмена данными между клиентом и сервером. Этот легковесный формат хранения и передачи данных. . .
|
Как переименовать ветку (branch) в Git
InfoMaster 18.01.2025
Одним из важнейших аспектов работы с Git является правильное управление ветками, которые позволяют разработчикам эффективно организовывать процесс разработки и тестирования новых функций. Особое. . .
|
Как удалить определенный элемент из массива в JavaScript
InfoMaster 18.01.2025
В современной веб-разработке массивы являются одной из ключевых структур данных, с которыми приходится работать разработчикам JavaScript. Операция удаления элементов из массива представляет собой. . .
|
Что такое yield в Python и как это работает
InfoMaster 18.01.2025
Концепция генераторов и yield в Python
В мире программирования на Python существуют мощные инструменты для эффективной работы с последовательностями данных, и одним из таких инструментов является. . .
|
В чем разница между git pull и git fetch в Git
InfoMaster 18.01.2025
Работая в командах разработчиков, специалисты постоянно сталкиваются с необходимостью синхронизации локальных репозиториев Git с удаленными серверами. Две команды - git fetch и git pull -. . .
|
Как удалить ветку (branch) в Git в локальном и удалённом репозитории
InfoMaster 18.01.2025
Ветка в Git представляет собой легковесный указатель на определенный коммит в истории разработки. Когда разработчики создают новую ветку, они получают возможность вносить изменения в код, не. . .
|
Почему обработка сортированного массива быстрее, чем несортированного
InfoMaster 18.01.2025
Влияние сортировки массивов на скорость обработки данных
При разработке программного обеспечения оптимизация производительности играет ключевую роль в создании эффективных приложений. Одним из. . .
|
Зачем нужны свойства в классе, если есть поля
InfoMaster 18.01.2025
Понятие свойств и полей в классах
В современном объектно-ориентированном программировании поля и свойства являются фундаментальными элементами классов, которые обеспечивают хранение и управление. . .
|