如何从DWORD构造std :: string?

17 c++ numeric stdstring

我有以下代码:

Tools::Logger.Log(string(GetLastError()), Error);
Run Code Online (Sandbox Code Playgroud)

GetLastError()返回一个DWORD数值,但构造函数std::string不接受a DWORD.

我能做什么?

Dou*_* T. 34

你想阅读ostringstream:

#include <sstream>
#include <string>

int main()
{
   std::ostringstream stream;
   int i = 5;
   stream << i;
   std::string str = stream.str();
} 
Run Code Online (Sandbox Code Playgroud)

  • 这很有趣......谁会否决这个?我不认为这会引起争议:) (2认同)
  • 如果您忘记#include <sstream>,您将收到一条奇怪的错误消息:"error:aggregate'std :: ostringstream ...'的类型不完整,无法定义".简单的修复. (2认同)

Joh*_*itb 22

您想将数字转换为string:

std::ostringstream os;
os << GetLastError();
Log(os.str(), Error);
Run Code Online (Sandbox Code Playgroud)

或者boost::lexical_cast:

Log(boost::lexical_cast<std::string>(GetLastError()), Error);
Run Code Online (Sandbox Code Playgroud)


Max*_*uxa 13

从C++ 11开始

std::to_string()与重载int,long,long long,unsigned int,unsigned long,unsigned long long,float,double,和long double.

auto i = 1337;
auto si = std::to_string(i); // "1337"
auto f = .1234f;
auto sf = std::to_string(f); // "0.123400"
Run Code Online (Sandbox Code Playgroud)

是的,我是粉丝auto.

要使用您的示例:

Tools::Logger.Log(std::to_string(GetLastError()), Error);
Run Code Online (Sandbox Code Playgroud)


Kon*_*lph 9

lexical_cast对于如上所述的简单案例,请使用Boost :

Tools::Logger.Log(lexical_cast<string>(GetLastError()), Error);
Run Code Online (Sandbox Code Playgroud)