首页 > 解决方案 > 将 std::string 转换为任何数字类型

问题描述

我想实现一个将 std::string 转换为任何数字类型的函数,我附带了这个

#include <iostream>
#include <string>
#include <sstream>

template<typename T>
T str2num(const std::string &str) {
    std::istringstream iss(str);
    T t;
    iss >> t;
    return t;
}

int main() {
    std::cout << str2num<uint64_t>("12345") << std::endl;
    std::cout << str2num<uint32_t>("12345") << std::endl;
    std::cout << str2num<uint16_t>("12345") << std::endl;
    std::cout << str2num<uint8_t>("123") << std::endl;
    return 0;
}

但并非一切都好。

最后一行输出1而不是 123。

为什么会发生这种情况以及如何改正?

标签: c++

解决方案


推荐阅读