Отображение переменной 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();
Другие вопросы по тегам