如何从字符串中获取数字?

时间:2013-10-21 06:47:00

标签: c++ digit

例如,有一个包含“1234”的字符串n。

string n = "1234"

现在,有分别用于存储1,2,3,4的int a,b,c,d。

a is 1
b is 2
c is 3
d is 4

如何使用标准函数从字符串“12345”获取这些数字?


以前,我使用以下方式。

int getDigit(string fourDigitString,int order)
{
    std::string myString = fourDigitString;
    int fourDigitInt = atoi( myString.c_str() ); // convert string fourDigitString to int fourDigitInt
    int result;
    int divisor = 4 - order;
    result = fourDigitInt / powerOfTen(divisor);
    result = result % 10;
    return result;
}

感谢您的关注

4 个答案:

答案 0 :(得分:3)

要详细说明我的评论和ShaltielQuack的答案,所以你知道为什么你只是从数字中减去字符'0',你可能想看一下{{3} }。

在那里,您将看到字符 '0'的ASCII代码是十进制48。然后,如果您看到ASCII代码,例如'1'还有一个,49。因此,如果您执行'1' - '0',则与执行49 - 48相同,这会产生十进制值1

答案 1 :(得分:2)

#include <iostream>
using namespace std;

int main() {

    string n = "12345";

    int a = n[0] - '0';
    int b = n[1] - '0';
    int c = n[2] - '0';
    int d = n[3] - '0';
    int e = n[4] - '0';

    cout << a << endl;
    cout << b << endl;
    cout << c << endl;
    cout << d << endl;
    cout << e << endl;
}

<强>输出:
1
2
3
4
5个

答案 2 :(得分:2)

std::string n ("12345");
int a, b, c, d, e;

a = str.at(0);
...

答案 3 :(得分:1)

您可以尝试以下代码:

#include <string>
#include <sstream>

int main() {
    std::string s = "100 123 42";
    std::istringstream is( s );
    int n;
    while( is >> n ) {
         // do something with n
    }
}

来自这个问题:splitting int from a string