我想知道如何使用字符串作为新参数来更改C ++中的控制台标题
我知道您可以使用Win32 API的SetConsoleTitle
函数,但不使用字符串参数
我需要这个,因为我正在使用控制台效果和命令进行Java本机接口项目
我正在使用Windows,它只需要与Windows兼容。
答案 0 :(得分:11)
SetConsoleTitle
函数确实采用字符串参数。只是字符串的种类取决于是否使用UNICODE。
你必须使用例如_T
宏以确保文字字符串格式正确(宽字符或单字节):
SetConsoleTitle(_T("Some title"));
如果您正在使用例如std::string
事情变得复杂一些,因为您可能需要在std::string
和std::wstring
之间进行转换,具体取决于_UNICODE
宏。
不必进行转换的一种方法是,如果未定义std::string
,则始终仅使用_UNICODE
,如果已定义,则仅std::wstring
。这可以通过在typedef
标头文件中添加"stdafx.h"
来完成:
#ifdef _UNICODE
typedef string std::wstring
#else
typedef string std::string
#endif
如果您的问题是SetConsoleTitle
没有std::string
(或std::wstring
),那是因为它必须与没有字符串类的C程序兼容(或者所有课程)。在这种情况下,您使用字符串类的c_str
来获取指向要与旧式C字符串的函数一起使用的字符串的指针:
string title = _T("Some title");
SetConsoleTitle(title.c_str());
答案 1 :(得分:3)
string str(L"Console title");
SetConsoleTitle(str.c_str());
答案 2 :(得分:1)
评论是旧的,但你可以用系统方法来做...
#include <iostream>
int main(){
system("title This is a title");
}
答案 3 :(得分:-2)
嘿,我想添加一个东西,它会随机化我的应用程序名称,比如 random_string 或其他东西,所以当我打开它时,它会更改控制台应用程序的名称