我想知道如何使用字符串作为新参数来更改 C++ 中的控制台标题。
我知道您可以使用 Win32 API 的 SetConsoleTitle
函数,但它不需要字符串参数。
我需要这个,因为我正在做一个带有控制台效果和命令的 Java 本机界面项目。
我正在使用 Windows,它只需要与 Windows 兼容。
原文由 Markovian8261 发布,翻译遵循 CC BY-SA 4.0 许可协议
我想知道如何使用字符串作为新参数来更改 C++ 中的控制台标题。
我知道您可以使用 Win32 API 的 SetConsoleTitle
函数,但它不需要字符串参数。
我需要这个,因为我正在做一个带有控制台效果和命令的 Java 本机界面项目。
我正在使用 Windows,它只需要与 Windows 兼容。
原文由 Markovian8261 发布,翻译遵循 CC BY-SA 4.0 许可协议
string str(L"Console title");
SetConsoleTitle(str.c_str());
原文由 Ivan Aksamentov - Drop 发布,翻译遵循 CC BY-SA 3.0 许可协议
3 回答2k 阅读✓ 已解决
2 回答3.9k 阅读✓ 已解决
2 回答3.2k 阅读✓ 已解决
1 回答3.2k 阅读✓ 已解决
1 回答2.7k 阅读✓ 已解决
3 回答3.4k 阅读
1 回答1.6k 阅读✓ 已解决
SetConsoleTitle
函数 确实 采用了字符串参数。只是字符串的 种类 取决于是否使用UNICODE。您必须使用例如
T
宏来确保文字字符串的格式正确(宽字符或单字节):If you are using eg
std::string
things get a little more complicated, as you might have to convert betweenstd::string
andstd::wstring
depending on theUNICODE
宏。不必进行该转换的一种方法是始终仅使用
std::string
如果UNICODE
,或者仅使用std::wstring
如果已定义。这可以通过在"stdafx.h"
头文件中添加typedef
来完成:如果您的问题是
SetConsoleTitle
不需要std::string
(或std::wstring
),那是因为它必须与没有的 C 程序兼容字符串类(或根本类)。在这种情况下,您使用字符串类的c_str
来获取指向要与需要旧式 C 字符串的函数一起使用的字符串的指针:还有另一种解决方案,那就是使用函数的显式窄字符“ASCII”版本,它有一个
A
后缀:当然还有一个宽字符变体,带有
W
后缀: