为什么以下代码
const std::string text = "str";
HANDLE stdout_handle = GetStdHandle(STD_OUTPUT_HANDLE);
COORD coords = { 0, 0 };
DWORD written = 0;
WriteConsoleOutputCharacterA(stdout_handle, text.c_str(), text.size(), coords, &written);
WORD attributes = FOREGROUND_GREEN;
WriteConsoleOutputAttribute(stdout_handle, &attributes, text.size(), coords, &written);
Run Code Online (Sandbox Code Playgroud)
结果如下:
我究竟做错了什么?我该如何解决?
&attributes指向长度为1的数组,单个绿色属性.但你声称阵列很text.size()长.因此,您将随机堆栈内容复制到下两个单元格.这恰好看起来是红色的.
解:
std::vector<WORD> attributes(text.size(), FOREGROUND_GREEN);
WriteConsoleOutputAttribute(stdout_handle, &attributes[0] ...
Run Code Online (Sandbox Code Playgroud)