方法を構築し、std::stringからのDWORD?
質問
以下のようなコード:
Tools::Logger.Log(string(GetLastError()), Error);
GetLastError()
を返します DWORD
数値が、コンストラクタの std::string
な受け入れ DWORD
.
どのようなことができますか?
解決
あなたはostringstream上に読みたい:
#include <sstream>
#include <string>
int main()
{
std::ostringstream stream;
int i = 5;
stream << i;
std::string str = stream.str();
}
他のヒント
あなたはstring
に番号を変換したい:
std::ostringstream os;
os << GetLastError();
Log(os.str(), Error);
またはboost::lexical_cast
ます:
Log(boost::lexical_cast<std::string>(GetLastError()), Error);
のので、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"
はい、私は auto
するのファンです。の
あなたの例を使用するには:
Tools::Logger.Log(std::to_string(GetLastError()), Error);
このような単純な例のためにブーストの lexical_cast
に使用します上記のように:
Tools::Logger.Log(lexical_cast<string>(GetLastError()), Error);
利用できる STLSoft's winstl::int_to_string(), 下記の通り
Tools::Logger.Log(winstl::int_to_string(GetLastError()), Error);
また希望する場合には、検索文字列形式のエラーコードを使用できSTLSoftの winstl::error_desc.
のstd ::にstringstreamを使用します。
std::stringstream errorStream;
errorStream << GetLastError();
Tools::Logger.Log(errorStream.str(), Error);
私は正常にやっていることはあります:
std::ostringstream oss;
oss << GetLastError() << " :: " << Error << std::endl;
Tools::Logger.Log(oss.str()); // or whatever interface is for logging
ここでは、すべての人が示唆したように、
、実装がにstringstreamを使用します。
私の現在のプロジェクトでは、機能を作成しました。
template <typename T>
std::string util::str::build( const T& value );
任意のソースから文字列を作成します。
だから、私たちのプロジェクトでは、
になりますTools::Logger.Log( util::str::build(GetLastError()) );
誰かがそれをラップしない限り、提案方法で、ストリームのような使用方法は、私のレビューに合格していないでしょう。
所属していません StackOverflow