C++11 如何将字符串的每个元素转换为int

C++11 如何将字符串的每个元素转换为int,c++11,C++11,我试图得到存储在字符串变量中的大数字的每个数字的总和。因此,首先要做的是将每个元素转换成一个int,并将其添加到总和中。所以我的问题是如何将字符串的元素转换为int?我尝试使用std::stoi,但遇到了编译器错误 下面是我的代码: std::string x = "7825394359371498287"; int sum = 0; for (int i = 0; i < x.size(); ++i) { sum += std::stoi(x[i]); } 您可以从char值中

我试图得到存储在字符串变量中的大数字的每个数字的总和。因此,首先要做的是将每个元素转换成一个int,并将其添加到总和中。所以我的问题是如何将字符串的元素转换为int?我尝试使用std::stoi,但遇到了编译器错误

下面是我的代码:

std::string x = "7825394359371498287";
int sum = 0;
for (int i = 0; i < x.size(); ++i) {
    sum += std::stoi(x[i]);
}
您可以从char值中减去0

std::string x = "7825394359371498287";
int sum = 0;
for (int i = 0; i < x.size(); ++i) {
    sum += x[i] - '0';
}
stoi给出了一个错误,因为它对字符串而不是单个字符有效。

请尝试:

std::string::size_type sz;
std::string x = "7825394359371498287";
int sum = 0;
for (int i = 0; i < x.size();i++) {
    sum += std::stoi(x.substr(i,1), &sz);
}
其他方式:

std::string x = "7825394359371498287";
int sum = 0;
for (int i = 0; i < x.size(); ++i) {
    sum += x[i] - '0';
}
问题是,它需要一个字符串,而您只给它一个字符

通过了解所使用的文本编码,可以轻松地解决此问题,因为这样您就可以轻松地将数字字符转换为相应的数字。以最常见的编码系统为例,如果您看到提供的链接中的表格,它将告诉您字符“7”的ASCII值为55,而字符“0”的ASCII值为48。这应该告诉你,要从字符“7”中得到数字7,你需要做的就是从“7”中减去“0”,即55-48,如下所示:

sum += x[i] - '0';

我现在知道了,你有点快。谢谢你的解释。