Code Bye

printf打印wstring显示不出来,到底是怎么回事

#include “stdafx.h”
#include <windows.h>
#include <fstream>
#include <string>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
wifstream fsRes(“TPM.log”);
if (!fsRes.is_open())
{
//AtlTrace(L”[TPMInfo]Fail to open TPM.log(%d)”, GetLastError());
return 0;
}
wstring ManufacturerId = L””;
wstring ManufacturerVersion = L””;
while (!fsRes.eof())
{
wstring s;
getline(fsRes, s);
if (s == L””)
{
continue;
}
if (s.find(L”ManufacturerId”) != wstring::npos)
{
ManufacturerId = s.substr(s.find(L”:”)+2);
}
if (s.find(L”ManufacturerVersion”) != wstring::npos)
{
printf(“%ws\n”, s);
ManufacturerVersion = s.substr(s.find(L”:”) + 2);
}
}
fsRes.close();
printf(“ManufacturerId = %ws, ManufacturerVersion = %ws\n”, ManufacturerId, ManufacturerVersion);
return 0;
}
TPM.log内容:
TpmPresent          : True
TpmReady            : True
ManufacturerId      : 1229870258
ManufacturerVersion : 2.0
ManagedAuthLevel    : Full
OwnerAuth           :
OwnerClearDisabled  : True
AutoProvisioning    : Enabled
LockedOut           : False
LockoutCount        : 0
LockoutMax          : 10
SelfTest            : {}
后来把wstring改成string,用printf也是打印不出来,用cout就可以正常显示。
解决方案

20

printf(“%ws\n”,  s.c_str());
printf(“ManufacturerId = %ws, ManufacturerVersion = %ws\n”, ManufacturerId.c_str(), ManufacturerVersion.c_str());

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明printf打印wstring显示不出来,到底是怎么回事