使用字符串在C ++中设置控制台标题

时间:2012-11-04 14:00:21

标签: c++ windows console java-native-interface title

我想知道如何使用字符串作为新参数来更改C ++中的控制台标题 我知道您可以使用Win32 API的SetConsoleTitle函数,但不使用字符串参数 我需要这个,因为我正在使用控制台效果和命令进行Java本机接口项目 我正在使用Windows,它只需要与Windows兼容。

4 个答案:

答案 0 :(得分:11)

SetConsoleTitle函数确实采用字符串参数。只是字符串的种类取决于是否使用UNICODE。

你必须使用例如_T宏以确保文字字符串格式正确(宽字符或单字节):

SetConsoleTitle(_T("Some title"));

如果您正在使用例如std::string事情变得复杂一些,因为您可能需要在std::stringstd::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 或其他东西,所以当我打开它时,它会更改控制台应用程序的名称