0

たとえば、「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

4 に答える 4

3

私のコメントと ShaltielQuack による回答を詳しく説明するために、数字から文字を差し引くだけの理由がわかるように、 ASCII テーブル'0'を見たいと思うかもしれません。

文字 '0'の ASCII コードが decimalであることがわかります48。次に、たとえば ASCII コードが表示された場合は、'1'もう 1 つ49です。したがって、これを行うと、結果が 10 進値になる'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 に答える
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 に答える