2011-04-18 28 views
4

這裏有一個簡單問題的C++新手。如何將CString的內容打印到控制檯?C++/CLI打印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; 
} 

輸出 「真」,並在控制檯上的 「H」。 TIA。

+0

爲什麼你會在第一時間做到這一點?也就是說,爲什麼在C++/CLI中使用'CString'來覆蓋'System :: String ^'? – ildjarn 2011-04-18 21:19:38

+0

只是一個測試示例,學習一些C++字符串基礎知識。舊版應用程序正在使用Cstring。 – 2011-04-19 01:40:21

+2

如果你只是在學習基礎知識,那麼值得注意的是'CString'是* MFC的*字符串類; C++標準庫的字符串類是['std :: string'](http://www.cppreference.com/wiki/string/basic_string/start)。 – ildjarn 2011-04-19 01:45:44

回答

5

我猜你正在編譯開啓Unicode,但printf是ANSI函數,所以它只打印字符串的第一個字符。使用_tprintf以匹配您_T字符串:

_tprintf(_T("%s"), cs3); 
+0

我需要什麼,謝謝。 – 2011-04-19 01:47:46

0

您需要打印

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

前,投下您的CString這應該工作

+0

我認爲這在技術上是正確的,但是ISTR CString實際上是這樣安排的,以便您可以在這裏擺弄不當行爲。 – 2011-04-18 20:57:18

+0

這顯示字符串中的第一個字符。 – 2011-04-19 01:48:11

3
Console::WriteLine(gcnew System::String(cs3)); 
+0

我改爲使用Win32控制檯應用程序,因此我無法再訪問控制檯。無論如何,謝謝。 – 2011-04-19 01:49:04

+0

@KlausNji這對你很好,但如果你願意的話,請閱讀這個問題。你的'main'是'int main(數組^args)',這是一個被管理的進程。 – 2014-02-12 12:46:14