2015-09-17 2 views
0

В программе C++ у меня есть указатель на значение wchar_t. Для того, чтобы получить значение в адреса указатель указывает на что я делаю следующее:Проблема с утечкой памяти с печатью wchar_t на консоль?

std::wstring myAnimalID; 
wchart_t* ptr; 
ptr = animal->second ->animalID //pointer from a previously defined instance 
myAnimalID =*ptr 

Однако, когда я печатаю, он печатает только первое значение WCHAR.

Что я делаю неправильно, где не могу распечатать всю ценность? Я попытался указать размер значения myAnimalID wchar_t, но получил ошибку нарушения прав доступа.

Я знаю, что подобные вопросы были заданы, но я не хотел задавать вопросы по старым темам.

Спасибо за любой совет.

+0

1. Вы используете 'wcout'? 2. Обратите внимание, что ptr действителен до тех пор, пока итератор действителен. означает, что ptr указывает на никуда после того, как итератор был изменен или был выпущен. – SHR

+0

Предоставьте [MCVE], пожалуйста. Ваш вопрос вне темы в текущей форме. Благодарим вас за соблюдение всех политик качества и ограничений на переполнение стека. –

+1

_ «первое значение wchar» _ Это _is_ все значение. Символ 'wchar_t' является одним [широким]. –

ответ

3

Когда вы говорите *ptr, вы разыскиваете указатель и получаете доступ к первому его элементу. Если animalID - это wchart_t*, тогда просто нужно назначить myAnimalID.

std::wstring myAnimalID = animal->second ->animalID; 
+1

Это сработало! И я понимаю свою ошибку. Большое спасибо. – JustBlossom