2010-11-10 148 views
2

假設,那我的代碼:的char *(64位(Windows 7)中)

// My.cpp 
#include <iostream> 

int main(int argc, char ** argv) 
{ 
    if (argc > 1) 
     std::cout << argv[ 1 ] << std::endl; 
} 

(我用MVSC++ 2008)

當我輸入cmd.exe運行我的程序:

My.exe argument

我得到這個輸出:

a r g u m e n t 

爲什麼?????

+0

看起來像你切出相關的代碼 - 你的例子甚至不會編譯 – 2010-11-10 18:43:25

+0

你的一些代碼似乎丟失 – 2010-11-10 18:43:44

+2

嘗試將輸出重定向到一個文件('my.exe argument> output.dat')和然後在十六進制編輯器中打開'output.dat'來查看哪些字節是真正輸出的。這將有助於發現發生了什麼問題。 – 2010-11-10 18:44:09

回答

5

可能是一個字符代碼問題。嘗試用「\ n」替換「std :: endl」並查看。另外,你編譯爲Unicode嗎?

1

它看起來像你用Unicode字符集選項編譯。轉到項目屬性,並在General頁面切換到「使用多字節字符集」。另外,如果你想使用UTF-16改變main()功能:

int wmain(int argc, wchar_t **argv) 

此外,使用std::wcout代替std::cout打印參數。