C++:将std::string转换为UINT64



我需要将从文本文件输入的数字的(十进制,如果重要的话)字符串表示转换为UINT64,以传递给我的数据对象。

    size_t startpos = num.find_first_not_of(" ");
    size_t endpos = num.find_last_not_of(" ");
    num = num.substr(startpos, endpos-startpos+1);
    UINT64 input;
    //convert num to input required here

有没有类似于atoi()的方法将std::字符串转换为UINT64?

谢谢!

编辑:下面的工作代码。

size_t startpos = num.find_first_not_of(" ");
size_t endpos = num.find_last_not_of(" ");
num = num.substr(startpos, endpos-startpos+1);
UINT64 input; //= std::strtoull(num.cstr(), NULL, 0);
std::istringstream stream (num);
stream >> input;

使用strtoull或_strtoui64()。示例:

std::string s = "1123.45";
__int64 n = std::strtoull(s.c_str(),NULL,0);

至少有两种方法可以做到这一点:

  1. 构造一个std::istringstream,并使用我们的老朋友>>运算符。

  2. 只需自己转换即可。分析所有数字,一次一个,将它们转换为单个整数。这是一个很好的练习。由于这是一个无符号值,所以甚至不需要担心负数。我认为这将是任何计算机科学入门课上的标准家庭作业。至少在我的时代是这样。

您可以使用stoull:

char s[25] = "12345678901234567890"; // or: string s = "12345678901234567890";
uint64_t a = stoull(s);

相关内容

  • 没有找到相关文章

最新更新