本文共 751 字,大约阅读时间需要 2 分钟。
轉載
从字符串解析出int和bool等类型的值
说到将字符串解析成int,首先想到的一定是atoi、atol等C函数。如果用C++来完成这些工具函数,那就要用到std::istringstream。
除了解析bool值之外,下面这个函数可以解析大部分的类型的数值:
template < class T > parseString( const std:: string & str) {
T value;
std::istringstream iss(str);
iss >> value;
return value;
} 上面这个模板可以将0解析成bool值false,将非0解析成treu。但它不能将字符串"false"解析成false,将"true"解析成true。因此要用一个特别的函数来解析bool型的值:
template<bool>
bool parseString( const std:: string & str) {
bool value;
std::istringstream iss(str);
iss >> boolalpha >> value;
return value;
} 上面的函数中,向输入流传入一个std::boolalpha标记,输入流就能认识字符形式的"true"和"false"了。
使用与之类似的办法解析十六进制字符串,需要传入的标记是std::hex:
template < class T> parseHexString( const std:: string & str) {
T value;
std::istringstream iss(str);
iss >> hex >> value;
return value;
} 转载地址:http://kasgi.baihongyu.com/