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

pop*_*lop 1 c++ windows console java-native-interface title

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

Som*_*ude 11

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

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

SetConsoleTitle(_T("Some title"));
Run Code Online (Sandbox Code Playgroud)

如果你正在使用如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
Run Code Online (Sandbox Code Playgroud)

如果你的问题SetConsoleTitle不是std::string(或std::wstring)它是因为它必须与没有字符串类(或类)的C程序兼容.在这种情况下,您使用c_str字符串类来获取指向要与旧式C字符串的函数一起使用的字符串的指针:

string title = _T("Some title");
SetConsoleTitle(title.c_str());
Run Code Online (Sandbox Code Playgroud)