我是Windows编程的新手,我迄今为止的经验是使用C#。
我被要求参与由C ++同事编写的项目。他避免使用任何.Net功能,因为他不喜欢它。我正在尝试添加一些调试输出,这是我的代码:
std::ostringstream strs;
strs << "Average value: " << dbl_sum / (double)_buffer.size() << " Buffer Size: " << _buffer.size();
std::string str = strs.str();
OutputDebugString((LPCTSTR)str.c_str());
然而,当我运行程序时,我在Debug窗口中看到这样的行:
?????????????????????????????›?
我最好的猜测是,这与我转换为LPCTSTR
有关,但我从这里的旧问题的答案中得到了这个方法。
答案 0 :(得分:0)
我猜你的项目的字符集是UNICODE
当您使用ASCII字符串并将其转换为UNICODE时,您会得到Gibberish。
要解决此问题,您需要使用宽字符串类型而不是字符串,或者将程序字符集更改为多字节
您需要更改以下类型:
string
到wstring
,
ostringstream
到wostringstream
,
"abc"
至L"abc"
std::wostringstream strs;
strs << L"Average value: " << dbl_sum / (double)_buffer.size() << L" Buffer Size: " << _buffer.size();
std::wstring str = strs.str();
OutputDebugString(str.c_str());
答案 1 :(得分:0)
感谢@Hans Passant我设法解决了这个问题。我将代码更改为:
std::ostringstream strs;
strs << "Average value: " << dbl_sum / (double)_buffer.size() << " Buffer Size: " << _buffer.size() << std::endl;
std::string str = strs.str();
OutputDebugStringA((LPCSTR)str.c_str());