我看到很多选项可以将字符串转换为C ++中的数字。
其中一些实际上建议使用标准C函数,例如atoi
和atof
。
我没有看到有人提出以下选项,它仅依赖于C ++ STL:
int Str2Num(const string& str) // can be called with a 'char*' argument as well
{
int num;
istringstream(str)>>num;
return num;
}
或更一般地说:
template <typename type>
type Str2Num(const string& str) // can be called with a 'char*' argument as well
{
type num;
istringstream(str)>>num;
return num;
}
上述实施有哪些缺点?
是否有更简单/更简洁的方法来实现此转换?
答案 0 :(得分:2)
答案 1 :(得分:2)
在c++11中,std::string
类本身定义了许多数字转换函数:
Numeric conversions
stoi(C ++ 11)
stol(C ++ 11)
stoll(C ++ 11)将字符串转换为有符号整数
stoul(C ++ 11)
stoull(C ++ 11)将字符串转换为无符号整数
stof(C ++ 11)
stod(C ++ 11)
stold(C ++ 11)将字符串转换为浮点值
对于pre c ++ 11标准,我看不出你的模板函数样本有什么缺点。
答案 2 :(得分:0)
你可以使用转换功能 与strtol() strtoul将() 但是在C ++ 11中,你得到了上面的答案。