2012-11-04 44 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

相关问题