c++ - 将 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++ - OpenGL - 启用调试 - 运行时 System.AccessViolationException
- java - 如何反序列化 RestController 上的嵌套 Kotlin 对象?
- c# - 按最高分排序.txt文件不起作用
- flutter - 列内的 ListView 抛出错误'垂直视口被赋予无界高度'
- scala - 如何将地图列表转换为Scala中的地图?
- sql-server - 如何编译 SQL 电子邮件但不发送?
- javascript - 如何从 VSCode 扩展中搜索目录中的代码?
- javascript - 如何获取div的右下角?
- c# - C#循环遍历类中的枚举和属性列表
- html - 学习了如何使用 HTML 和 CSS 从头开始制作响应式 HTML 电子邮件。下一步是什么?