答案 0 :(得分:4)
使用atoi()
:
int foo = atoi(str.c_str());
答案 1 :(得分:1)
如果您想要正确执行此操作并测试转换错误,建议您使用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
进行转换,以便获得一些错误检查。
答案 2 :(得分:1)
由于您将其标记为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();
}
答案 3 :(得分:0)
此任务可能尝试获取的技术是访问每个数字,例如str[0] - '0' = 1
并乘以它们的位置值。但是atoi要快得多!