2012-11-04 39 views
0

我想知道如何使用字符串作爲新參數在C++中更改控制檯標題。
我知道你可以使用Win32 API的SetConsoleTitle函數,但是不需要字符串參數。
我需要這個,因爲我正在用控制檯效果和命令做一個Java本地接口項目。
我正在使用Windows,它只需要與Windows兼容。使用字符串在C++中設置控制檯標題

+0

'SetConsoleTitle'確實先接受一個字符串 – nico

+0

谷歌你的問題,這是很容易找到... –

回答

7

SetConsoleTitle功能確實確實有一個字符串參數。只是字符串種類取決於使用或UNICODE或不。

你必須使用例如在_T宏來確保文字字符串是正確的格式(寬字符或單字節)的:

SetConsoleTitle(_T("Some title")); 

如果使用例如std::string事情會變得更復雜一些,因爲根據_UNICODE宏,您可能必須在std::stringstd::wstring之間進行轉換。

如果未定義_UNICODE,或者只有定義了std::wstring,則無需執行該轉換的一種方法是始終僅使用std::string。這可以通過在"stdafx.h"頭文件中添加typedef來完成:

#ifdef _UNICODE 
typedef string std::wstring 
#else 
typedef string std::string 
#endif 

如果你的問題是,SetConsoleTitle並不需要std::string(或std::wstring),這是因爲它有可能是其沒有按」 C程序兼容沒有字符串類(或類)。在這種情況下,你使用string類的c_str得到一個字符串指針,以與需要老式的C字符串函數中使用:

string title = _T("Some title"); 
SetConsoleTitle(title.c_str()); 
+1

請注意,如果你有不正確的字符大小,你不需要顯式地轉換字符串,你可以明確地調用適當的版本功能。在這種情況下,您可以調用SetConsoleTitleA(用於ANSI字符串)或SetConsoleTitleW(用於Unicode字符串)。 –

2
string str(L"Console title"); 
SetConsoleTitle(str.c_str()); 
+0

謝謝我使用了錯誤的字符串 – popgalop

相關問題