将字符串转换为C ++中的数字

时间:2014-03-01 12:21:55

标签: c++ stl string-conversion

我看到很多选项可以将字符串转换为C ++中的数字。

其中一些实际上建议使用标准C函数,例如atoiatof

我没有看到有人提出以下选项,它仅依赖于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;
}

上述实施有哪些缺点?

是否有更简单/更简洁的方法来实现此转换?

3 个答案:

答案 0 :(得分:2)

自C ++ 11以来,我们已经有了std::stoi

std::stoi(str)

还有std::stolstd::stoll

答案 1 :(得分:2)

中,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中,你得到了上面的答案。