我有一个包含0到60之间数字的字符串。如何将其转换为int?如果char小于10,则char包含前导0。
例如,我想转换char b [] =“08”; to int n = 8或char b [] =“41”;到int n = 41;
答案 0 :(得分:1)
如果你可以使用boost,那就有很棒的函数boost :: lexical_cast
int x = boost::lexical_cast<int>("123");
c ++ 11也有函数stoi(http://www.cplusplus.com/reference/string/stoi/)
int x = std::stoi("123");
答案 1 :(得分:0)
只要字符串以空值终止,您就可以使用atoi()或sscanf进行转换。
示例:
n = atoi(b);
或
sscanf( b, "%d", &n);
[编辑] 或者你可以采用更纯粹的C ++方式:
#include <sstream>
std::stringstream ss;
ss << b;
ss >> n;
答案 2 :(得分:0)
简单的C ++方式:
#include <sstream>
#include <string>
int string_to_int (std::string const & str)
{
std::istringstream iss { str };
int value;
iss >> value;
return value;
}
答案 3 :(得分:-1)
C具有atoi
方法,可用于将字符串转换为整数:
int c = atoi("123"); //c == 123
文档here
警告它不会抛出任何异常,并且如果传入的值不是int或者在有效int的范围之外,将导致未定义的行为