Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 8, средняя оценка - 4.63
MAnton
23 / 23 / 1
Регистрация: 21.04.2011
Сообщений: 139
#1

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

13.07.2012, 13:45. Просмотров 1108. Ответов 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 *
у меня вопрос - что это за квадратики?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.07.2012, 13:45
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Выделение памяти под wchar_t (C++):

Выделение памяти под файл - C++
Всем доброго времени суток. Написал некоторую структуру, работают все пунктики, все функции, но нашёлся недочёт. Если записывать в файл...

Выделение памяти под матрицу - C++
Всем привет. float **AllocMat(int Rows, int Colomns) { float ** Mat; try { Mat = new...

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

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

Выделение памяти под структуру - C++
Доброго дня, товарисчи. В общем, возникла проблема при выделении памяти для структуры. Подскажите, пожалуйста, в чем ошибка. Собсна сам...

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Evg
Эксперт CАвтор FAQ
17634 / 5858 / 378
Регистрация: 30.03.2009
Сообщений: 16,160
Записей в блоге: 26
13.07.2012, 14:23 #2
На всякий случай. Не

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

C
char *str=new char[strlen("stroka"+1)];
alexey31415
59 / 59 / 3
Регистрация: 16.05.2010
Сообщений: 632
13.07.2012, 14:25 #3
wchar_t занимает 2 байта,а char 1 байт,вот видно половина только и заполнилась,попробуй записать следующее:строка
Ksan
27 / 27 / 0
Регистрация: 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];
Evg
Эксперт CАвтор FAQ
17634 / 5858 / 378
Регистрация: 30.03.2009
Сообщений: 16,160
Записей в блоге: 26
13.07.2012, 14:45 #5
Ksan, да, накосячил

Цитата Сообщение от alexey31415 Посмотреть сообщение
wchar_t занимает 2 байта,а char 1 байт,вот видно половина только и заполнилась,попробуй записать следующее:строка
Думается, что при конвертации надо хвостовой символ 0 захватывать, т.е. в вызов mbstowcs последним параметром передавать "l+1", а то после конвертации в конце остаётся мусор. А при выделении памяти под wstr так же указывать на один символ больше (для хвостового нуля)
alexey31415
59 / 59 / 3
Регистрация: 16.05.2010
Сообщений: 632
13.07.2012, 14:55 #6
не,я просто имел ввиду,что в случае с английским алфавитом возникает такая,а вот в случае,например,с русским будет иначе
Evg
Эксперт CАвтор FAQ
17634 / 5858 / 378
Регистрация: 30.03.2009
Сообщений: 16,160
Записей в блоге: 26
13.07.2012, 15:14 #7
Цитата Сообщение от alexey31415 Посмотреть сообщение
не,я просто имел ввиду,что в случае с английским алфавитом возникает такая,а вот в случае,например,с русским будет иначе
Если конвертировать с нулём, то всё будет хорошо. А то, что в буфере остались лишние символы - пофиг, они экранированы нулём
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.07.2012, 15:14
Привет! Вот еще темы с ответами:

Выделение памяти под массив - C++
Требуется выделить память под матрицу. Будет ли следующий код работать корректно? //глобальная область int x_size = 3; ...

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

Выделение памяти под матрицу - C++
Существует такой класс: class matr{ public: double **m; // адрес матрицы int mi, my; //стобцы, строки //функции ...

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


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
13.07.2012, 15:14
Ответ Создать тему
Опции темы

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