转换一个没有。从字符串到整数[重复]

Posted

技术标签:

【中文标题】转换一个没有。从字符串到整数[重复]【英文标题】:Convert a no. from string to integer [duplicate] 【发布时间】:2011-03-13 13:33:11 【问题描述】:

可能重复:convert string to integer in c++

转换一个号码。从字符串到整数。

例如:str:"1234" 转换为 int a=1234;

我想要正确解释的提示

【问题讨论】:

重复***.com/questions/3858978/… 【参考方案1】:

使用atoi():

int foo = atoi(str.c_str());

【讨论】:

我想在不使用内置函数的情况下回答【参考方案2】:

如果您想正确执行此操作并测试转换中的错误,我建议使用boost::lexical_cast。下面是一个使用示例:

#include <boost/lexical_cast>

std::string num_string("1234");

try

  int num=boost::lexical_cast<int>(numString);

catch (boost::bad_lexical_cast &ex)

  // Handle failed conversions

如果由于某种原因您不能在项目中使用 boost,至少使用标准的stringstream 进行转换,以便获得一些错误检查的外观。

【讨论】:

AFAIR lexical_cast 非常昂贵。不过同意使用stringstream【参考方案3】:

由于您将其标记为 C++,因此您可以查看 istringstream:

bool convertStr(const char *str, unsigned int *num) 
  istringstream iss(str);
  return (iss >> *num);    

或者你甚至可以使用模板:

template <class T>
bool fromString(T &t, const string &s, 
                ios_base& (*f)(ios_base&) = dec) 
  istringstream iss(s);
  return !(iss >> f >> t).fail();

【讨论】:

【参考方案4】:

此任务可能尝试使用的技术是访问每个数字,例如 str[0] - '0' = 1 并乘以它们的位置值。但是 atoi 要快得多!

【讨论】:

我的理由是,IMO,这可能是学生的问题。 你能用例子解释一下你的第一个答案部分吗 你的字符串是4位数,所以第一个值是10^3。第一个字符是'1',所以要得到它的值,减去'0' = 1. 1*10^3 = 1000。对其他地方重复并总结它们。

以上是关于转换一个没有。从字符串到整数[重复]的主要内容,如果未能解决你的问题,请参考以下文章

在Java中从整数转换为二进制时保留整个字节[重复]

Java - 将整数转换为字符串[重复]

将字符串转换为整数参数[重复]

Leetcode 348:无重复最长子串-中位数-字符串转换整数

Leetcode 348:无重复最长子串-中位数-字符串转换整数

C ++没有从字符串到const char *的可行转换* [重复]