0

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

string n = "1234"

现在有 int a, b, c, d 分别存放 1, 2, 3, 4。

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

4 回答 4

3

要详细说明我的评论和 ShaltielQuack 的回答,以便您知道为什么只从数字中减去字符'0',您可能需要查看ASCII 表

在那里你会看到字符的 ASCII 码 '0'十进制的48。如果您随后看到 ASCII 代码,例如'1',它是另外一个,49. 因此,如果您这样做,则与导致十进制值的结果'1' - '0'相同。49 - 481

于 2013-10-21T06:57:55.337 回答
2
std::string n ("12345");
int a, b, c, d, e;

a = str.at(0);
...
于 2013-10-21T06:57:46.660 回答
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

于 2013-10-21T06:53:09.230 回答
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
    }
}

来自这个问题:从字符串中拆分 int

于 2013-10-21T06:50:32.433 回答