【发布时间】:2020-11-03 18:29:47
【问题描述】:
我一直在尝试学习如何使用 Windows API 制作 C++ 应用程序。我尝试使用一个简单的函数SetConsoleTitle() 来设置控制台窗口的标题。这是我的程序:
#include <iostream>
#include <tchar.h>
#include <windows.h>
int main(){
TCHAR abc[5];
abc[0] = 'H';
abc[1] = 'E';
abc[2] = 'L';
abc[3] = 'L';
abc[4] = 'O';
SetConsoleTitle(abc);
std::cout << "Hello World\n";
system("pause > nul");
}
这就是结果
标题应该是"HELLO"。其他角色在那里做什么,我该如何摆脱他们?
我使用 Visual Studio Code 2019 编译了这段代码。
【问题讨论】:
-
你需要空终止你的字符串
-
在旁注中,你真的不应该在这个例子中使用
TCHAR。它在现代代码中没有位置,此外,如果您将项目设置为 Unicode,那么此代码将无法按原样正确编译,因为您没有使用TEXT()宏作为字符文字,例如:abc[0] = TEXT('H'); ...您应该去掉#include <tchar.h>,把TCHAR改成char,把SetConsoleTitle改成SetConsoleTitleA。或者更好的是,改用wchar_t和SetConsoleTitleW。 -
@RemyLebeau 对于 ASCII 字符,不需要
TEXT宏,因为char将向上转换为wchar_t就好了。只有 U+007f 以外的字符或实际字符串需要宏。即使这样也已经过时了,因为您可能只需将L添加到所有内容之前。