将数字字符串转换为数字的方法有多种,C中有atoi,atof,sscanf函数可用,这些函数的用法可以在msdn里查到,这里就不在多说了,现在说一种通用的转换的方法:
- template <typename Type>
- bool str2value(const std::string &str, Type &value, std::ios_base &(*fun)(std::ios_base&) = std::oct)
- {
- std::istringstream input_istring(str); //把字符串保存入字符流
- return(!(input_istring >> fun >> value).fail());
- }
第1个参数为待转换的字符串,第2个参数是转换后的值
第3个参数fun的值可能为std::hex, std::dec, std::oct
示例:
- std::string strNum = "60.12";
- float fNum = 0.0;
- str2value<float>(strNum,fNum);
- strNum = "FFF";
- int iNum = 0;
- str2value<int>(strNum,iNum,std::hex);
- std::cout << fNum << std::endl;
- std::cout << iNum << std::endl;
输出:
60.12
4095