C++ / CLI печать содержимого строки CString в консоль


Новичок C++ здесь с быстрым вопросом. Как я могу распечатать содержимое CString в консоли?

Делаем это

int main(array<System::String ^> ^args)
{               
    CString cs1 = _T("Hy");
    CString cs2 = _T(" u");
    CString cs3 = cs1 + cs2;

    Console::WriteLine(cs3);    
    printf("%s", cs3);  
    return 0;
}

Выводит "True" и " H " на консоль. ТИА.

3 4

3 ответа:

Я предполагаю, что вы компилируете с включенным Юникодом, но printf - это функция ANSI, поэтому она печатает только первый символ строки. Используйте _tprintf для сопоставления строк _T:

_tprintf(_T("%s"), cs3);
Console::WriteLine(gcnew System::String(cs3)); 

Перед печатью необходимо отлить CString

printf("%s ", (LPCTSTR)cs3);

Это должно сработать