gpt4 book ai didi

c++ - LPTSTR 开头的奇怪字符? C++

转载 作者:行者123 更新时间:2023-11-30 01:31:34 24 4
gpt4 key购买 nike

我正在使用此代码获取 Windows 版本:

#define BUFSIZE 256

bool config::GetOS(LPTSTR OSv)
{
OSVERSIONINFOEX osve;
BOOL bOsVersionInfoEx;

ZeroMemory(&osve, sizeof(OSVERSIONINFOEX));

osve.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX);

if( !(bOsVersionInfoEx = GetVersionEx ((OSVERSIONINFO *) &osve)) )
return false;

TCHAR buf[BUFSIZE];
StringCchPrintf(buf, BUFSIZE, TEXT("%u.%u.%u.%u"),
osve.dwPlatformId,
osve.dwMajorVersion,
osve.dwMinorVersion,
osve.dwBuildNumber);

StringCchCat(OSv, BUFSIZE, buf);

return true;
}

我正在测试它:

LPTSTR OSv= new TCHAR[BUFSIZE];
config c;
c.GetOS(OSv);
MessageBox(OSv, 0, 0);

在 msgbox 中,我得到类似 äì5.1.20(其中 5.1.20 = OSv)的内容,但前 2 或 3 个字符是一些我不知道它们何时出现的奇怪字符。更奇怪的是,如果我再次调用第二段它显示正常,它只在我第一次执行时显示奇怪的字符。

有人知道这里发生了什么吗?

最佳答案

你的问题是你应该使用 StringCchCopy而不是 StringCchCat。

StringCchCat 将搜索直到在字符串中找到 0,然后将结果追加到那里。由于您没有将输出字符串缓冲区初始化为 0,因此您不能假设它将以 0 开头。

关于c++ - LPTSTR 开头的奇怪字符? C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2890588/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com