Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
25 / 25 / 5
Регистрация: 21.04.2011
Сообщений: 141
1

Выделение памяти под wchar_t

13.07.2012, 13:45. Просмотров 1754. Ответов 6
Метки нет (Все метки)

вот такой код:
C++ (Qt)
1
2
3
4
5
char *str=new char[strlen("stroka+1")];
strcpy(str,"stroka");
int l=strlen(str);
wchar_t *wstr=new wchar_t[l];
mbstowcs(wstr,str,l);
В отладчике обнаружил такую запись:
wstr 0x004b7438 "stroka﷽﷽ꮫꮫꮫꮫ" wchar_t *
у меня вопрос - что это за квадратики?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.07.2012, 13:45
Ответы с готовыми решениями:

Выделение памяти под массив
в массиве данных хранять в последовательных ячейках памяти В программе, выделенна память под...

Выделение памяти под указатель
Здравствуйте форумчане,у меня возник маленький вопрос:) Почему sizeof(char) дает результат в 1...

Выделение памяти под переменную
Драсте, уважаемые. Мне надо выделить переменную на 25мег, чтоб в ней хранить все просчёты...

Выделение памяти под указатель
Здравствуйте! Есть следующий код. Я разбиваю строку на слова и слова заданной длины пытаюсь...

6
Evg
Эксперт CАвтор FAQ
21115 / 8131 / 628
Регистрация: 30.03.2009
Сообщений: 22,447
Записей в блоге: 30
13.07.2012, 14:23 2
На всякий случай. Не

C
char *str=new char[strlen("stroka+1")];
а

C
char *str=new char[strlen("stroka"+1)];
0
59 / 59 / 7
Регистрация: 16.05.2010
Сообщений: 632
13.07.2012, 14:25 3
wchar_t занимает 2 байта,а char 1 байт,вот видно половина только и заполнилась,попробуй записать следующее:строка
0
27 / 27 / 4
Регистрация: 02.11.2010
Сообщений: 370
13.07.2012, 14:33 4
Evg, не
C++
1
char *str=new char[strlen("stroka"+1)];
, а
C++
1
char *str=new char[strlen("stroka")+1];
0
Evg
Эксперт CАвтор FAQ
21115 / 8131 / 628
Регистрация: 30.03.2009
Сообщений: 22,447
Записей в блоге: 30
13.07.2012, 14:45 5
Ksan, да, накосячил

Цитата Сообщение от alexey31415 Посмотреть сообщение
wchar_t занимает 2 байта,а char 1 байт,вот видно половина только и заполнилась,попробуй записать следующее:строка
Думается, что при конвертации надо хвостовой символ 0 захватывать, т.е. в вызов mbstowcs последним параметром передавать "l+1", а то после конвертации в конце остаётся мусор. А при выделении памяти под wstr так же указывать на один символ больше (для хвостового нуля)
1
59 / 59 / 7
Регистрация: 16.05.2010
Сообщений: 632
13.07.2012, 14:55 6
не,я просто имел ввиду,что в случае с английским алфавитом возникает такая,а вот в случае,например,с русским будет иначе
0
Evg
Эксперт CАвтор FAQ
21115 / 8131 / 628
Регистрация: 30.03.2009
Сообщений: 22,447
Записей в блоге: 30
13.07.2012, 15:14 7
Цитата Сообщение от alexey31415 Посмотреть сообщение
не,я просто имел ввиду,что в случае с английским алфавитом возникает такая,а вот в случае,например,с русским будет иначе
Если конвертировать с нулём, то всё будет хорошо. А то, что в буфере остались лишние символы - пофиг, они экранированы нулём
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.07.2012, 15:14

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Выделение памяти под структуру
enrollee *p=new enrollee; после работы delete p; выбивает ошибку. неправильно очищаю???

Выделение памяти под структуру
Наведите пример выделения памяти под структуру

Выделение памяти под масссив
Как занести данные в двумерный массив с клавиатуры? пользователь должен сам ввести размерность

Выделение памяти под матрицу
Всем доброго времени суток! Есть такая проблема, у меня есть свой класс Cell. Мне нужно создать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.