Я вызываю функцию, которая выводит широкий символ в выходной поток. Учитывать:-
wcout<<GetOutput();
и определение функции выглядит следующим образом: -
const wchar_t* GetOutput()
{
std::wstringstream stringStream;
stringStream << out_name << " " << out_type << out_subtype;
wchar_t* check = new wchar_t[stringStream.str().length() + 1];
wcscpy(check, stringStream.str().c_str());
return check;
}
Теперь, когда эта функция вызывается в cmd, она дает мне правильный вывод. Но когда та же функция вызывается в linux (WSL), я получаю вывод в виде адреса, который выглядит примерно так:
0x1ef110ad0
Почему это происходит?
Изменить: - Определение переменных следующее: -
const std::wstring out_name = L"My Name";
const std::wstring out_type = L"Type1";
const std::wstring out_subtype = L"SubType1";
out_name
? Что такоеout_type
? Что такоеout_subtype
? Почему вы используете узкую строку символов" "
для пробела? - person Some programmer dude   schedule 08.07.2021wout
? Вы имеете в видуstd::wcout
? У вас также есть утечки памяти - person Mircea Ispas   schedule 08.07.2021" "
на строку широких символовL" "
? Или широкий символL' '
? - person Some programmer dude   schedule 08.07.2021GetOutput
? Почему не объектstd::wstring
? - person Some programmer dude   schedule 08.07.2021_UNICODE
, так иUNICODE
. Попробуйте и дайте нам знать. Заголовок stackoverflow.com/questions/7953025/. - person   schedule 08.07.2021out_name , out_type, out_subtype
? - person   schedule 08.07.2021main
,GetOutput
, с минимальными заголовками, протестировать. Если вы получите такие же результаты, разместите их вместе с информацией о том, используете ли вы DEBUG или RELEASE, конфигурацию процессора, x86, x64, ARM, ARM64. Я бы подумал, что вам лучше всего менять одну вещь за раз. Также обязательно запустите это приложение без удаленной отладки VS на этом компьютере. - person   schedule 08.07.2021