C++ 将 LARGE_INTEGER 转换为字符串
C++ Convert LARGE_INTEGER to String
我有一个更大的整数,它是由一个运算形成的
__int64 c = (bytesTransferred.HighPart*2^31 + bytesTransferred.LowPart) * 100/(fileSize.HighPart*2^31 + bytesTransferred.LowPart);
如何将其转换为字符串以在消息框中显示?我试过了:
std::string percent;
std::stringstream strstream;
strstream << c;
strstream >> percent;
但是没用。
也许:
std::stringstream strstream;
strstream << c;
std::string percent(strstream.str());
或尝试查看 _i64toa() 函数。
首先,您的计算似乎有误:我猜它最右边的部分应该是 fileSize.LowPart
而不是 bytesTransferred.LowPart
。
计算 c
的更好方法可能是
#include <cstdint>
int64_t c = (bytesTransferred.QuadPart * 100) / fileSize.QuadPart;
然后要转换为字符串,您可以这样做:
std::stringstream ss;
ss << c;
std::string percent = ss.str();
std::string to_string( long long value );
定义于<string>
http://en.cppreference.com/w/cpp/string/basic_string/to_string
你的字符串转换没有问题,你的LARGE_INTEGER数学有问题。试试这个:
__int64 c = (bytesTransferred.QuadPart * 100) / (fileSize.QuadPart)
我有一个更大的整数,它是由一个运算形成的
__int64 c = (bytesTransferred.HighPart*2^31 + bytesTransferred.LowPart) * 100/(fileSize.HighPart*2^31 + bytesTransferred.LowPart);
如何将其转换为字符串以在消息框中显示?我试过了:
std::string percent;
std::stringstream strstream;
strstream << c;
strstream >> percent;
但是没用。
也许:
std::stringstream strstream;
strstream << c;
std::string percent(strstream.str());
或尝试查看 _i64toa() 函数。
首先,您的计算似乎有误:我猜它最右边的部分应该是 fileSize.LowPart
而不是 bytesTransferred.LowPart
。
计算 c
的更好方法可能是
#include <cstdint>
int64_t c = (bytesTransferred.QuadPart * 100) / fileSize.QuadPart;
然后要转换为字符串,您可以这样做:
std::stringstream ss;
ss << c;
std::string percent = ss.str();
std::string to_string( long long value );
定义于<string>
http://en.cppreference.com/w/cpp/string/basic_string/to_string
你的字符串转换没有问题,你的LARGE_INTEGER数学有问题。试试这个:
__int64 c = (bytesTransferred.QuadPart * 100) / (fileSize.QuadPart)