Преобразование строковых значений в cstring означает, что результат cstring не получает полной длины строки?
При декодировании штрих-кода результат значения штрих-кода сохраняется в
std::string str_data
результат значения штрих-кода должен быть такимstr_data=[)> {RS}0603{GS}(51)KD-78F0443GBGAHAX/01032/T6(53)1256(54)15204D1
1E4-00210A002(55)2015/05/15 (56)частичный (57) T. (58)2 (59)1 (5D)02(5F)
1519 1519XP001 (5H)ЯПОНИЯ (5J)ЯПОНИЯ (5L)ЯПОНИЯ (5M)6255-3544(67) 0 (68)U
PD78F0443GB-ГАХ-ТОПОР(69)002G1S5X@(6Б)0001102866(6И)ЛГ-151(6К) - ПИ(6Л
)JP (6M)JP{RS}{EOT}
но значение результата создает нулевое пространство в результирующем значении, например
[)>000603?(51)KD-78F0443GBGAHAX/01032/T6(53)1256(54)15204D1
1E4-00210A002(55)2015/05/15 (56)частичный (57) T. (58)2 (59)1 (5D)02(5F)
1519 1519XP001 (5H)ЯПОНИЯ (5J)ЯПОНИЯ (5L)ЯПОНИЯ (5M)6255-3544(67) 0 (68)U
PD78F0443GB-ГАХ-ТОПОР(69)002G1S5X@(6Б)0001102866(6И)ЛГ-151(6К) - ПИ(6Л
)ПИ(6М)ЯПО
нулевые значения выделены жирным шрифтом.
и еще одна проблема заключается в том, что при преобразовании этого значения std:: string в CString я получаю "[)>" этот результат только из-за получения нулевого значения он пропускает остальные значения.
Итак, мне нужен правильный способ сохранить это результирующее значение..
Что я уже пробовал:
Я попытался стереть нулевое пространство, используя следующий код
while(1) { int letter=a_strdata.find('\0'); if(letter==-1) { break; } a_strdata= a_strdata.erase(letter,1); }
Он удаляет нулевое пространство и дает полную длину строки результата, но мне нужен результат с нулевым пространством или правильным преобразованием.
CPallini
Как вы "конвертируете" std:. string в CString? Вы используете сборку UNICODE?
Member 12624812
Нет мультикодовых
использование этого преобразования
СТД::строка str_data.c_str();
преобразование в CString