Отображение переменной WideString в консоли
У меня проблемы с отображением WideString в консоли. Я полностью новичок в Builder C++ и C++ в целом. Не уверен, что мне нужны некоторые заголовки или, возможно, значения, показанные при отладке, могут помочь. Кажется, что при выполнении
wcout << s;
он показывает адрес вместо "массива wchar".
Вот мой код:
//---------------------------------------------------------------------------
#include <iostream.h>
#include <vcl.h>
#include <string>
#include <wstring.h>
#pragma hdrstop
//---------------------------------------------------------------------------
#pragma argsused
int main(int argc, char* argv[])
{
int a;
WideString s;
string str;
cout << "Enter a: ";
cin >> a;
//to read the return
cin.get();
cout << "Enter str: ";
cin >> str;
//to read the return
cin.get();
cout << "\n";
s = L"HELLO";
wcout << s;
cout << "\n\n";
wcout << L"BYE";
cout << "\n\nPress any key to continue...";
cin.get();
return 0;
}
//---------------------------------------------------------------------------
И это вывод:
Enter a: 4
Enter str: potato
2fb0b4
BYE
Press any key to continue...
1 ответ
Решение
Вы передаете WideString в wcout. WideString - это целый класс, который содержит широкие символы и работает с ними, а не только с строкой. Использовать c_bstr
метод WideString, чтобы получить фактическую строку символов.
WideString str;
str = L"HELLO";
wcout << s.b_cstr();