转换一个没有。从字符串到整数[重复]
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。对其他地方重复并总结它们。以上是关于转换一个没有。从字符串到整数[重复]的主要内容,如果未能解决你的问题,请参考以下文章
Leetcode 348:无重复最长子串-中位数-字符串转换整数