我想知道如何使用字符串作为新参数来更改 C++ 中的控制台标题。
我知道您可以使用 Win32 API 的
SetConsoleTitle
函数,但它不需要字符串参数。SetConsoleTitle
函数确实接受字符串参数。只是字符串的kind取决于是否使用UNICODE。
您必须使用例如T
宏确保文字字符串的格式正确(宽字符或单字节):
SetConsoleTitle(T("Some title"));
如果您正在使用例如std::string
事情变得有点复杂,因为您可能需要根据
std::string
宏在
std::wstring
和
UNICODE
之间进行转换。不必进行该转换的一种方法是,如果未定义
std::string
,则始终仅使用
UNICODE
;如果已定义,则仅使用
std::wstring
。这可以通过在
typedef
头文件中添加
"stdafx.h"
来完成:
#ifdef UNICODE
typedef std::wstring tstring;
#else
typedef std::string tstring;
#endif
如果您的问题是 SetConsoleTitle
不采用
std::string
(或
std::wstring
),那是因为它必须与没有字符串类(或根本没有类)的 C 程序兼容。在这种情况下,您可以使用字符串类的
c_str
来获取指向要与需要旧式 C 字符串的函数一起使用的字符串的指针:
tstring title = T("Some title");
SetConsoleTitle(title.c_str());
A
:
SetConsoleTitleA("Some title");
当然还有一个宽字符变体,带有 W
后缀:
SetConsoleTitleW(L"Some title");
string str(L"Console title");
SetConsoleTitle(str.c_str());
#include <iostream>
int main(){
system("title This is a title");
}