如何将字符串中的字符转换为整数?

问题描述 投票:1回答:4

所以我有一个包含数字的字符串,我想采用这些数字之一并将其转换为这样的int:

string s = "13245";
int a = stoi(s.at(3));

我尝试了stoi:

int a = stoi(s.at(3));

我尝试过atoi:

int a = atoi(s.at(3));

但是这些方法都不起作用,我发现的唯一方法是C方法:

int a = s.at(3)-'0';

你知道为什么stoi / atoi不起作用吗?您还有其他方法可以将字符串中的字符转换为int吗?

c++ char digits
4个回答
-2
投票

atoi接受const char *,而s.at(index)返回一个char,因此编译器将返回类型错误,而您可以执行以下操作:

    string s = "13245";
    auto c = s.at(3);
    int a = atoi(&c);

4
投票

函数stoi需要一个std :: string类型的对象。 C函数atoi期望指向字符串的char *类型的对象。当您处理char类型的对象时。

int a = s.at(3)-'0';

是将数字字符的内部表示形式转换为相应的整数值的常用方法,因为数字代码彼此之间没有间隙。

来自C ++标准(2.3个字符集)

  1. ...在源和执行基本字符集中,上面的十进制数字列表中位于0之后的每个字符应为比上一个值大一个。

1
投票

std :: string是一个字符数组,.at(3)或[3]将返回您一个字符。stoi和atoi处理字符串(许多字符),并将诸如“ -42”之类的字符串转换为其数字表示形式-42。


0
投票

根据文档:

© www.soinside.com 2019 - 2024. All rights reserved.