21

string(char* || char[])Cで整数を解析するにはどうすればよいですか? Integer.parseInt(String)CのJavaからのメソッドに相当するものはありますか?

4

9 に答える 9

48

整数を文字列に変換したい場合は、関数 を試してくださいsnprintf()

文字列を整数に変換する場合は、関数sscanf()またはatoi()またはを試してくださいatol()

于 2009-01-25T23:41:23.933 に答える
15

int を文字列に変換するには:

int x = -5;
char buffer[50];
sprintf( buffer, "%d", x );

ダブルスでも実行できます。

double d = 3.1415;
sprintf( buffer, "%f", d );

文字列を int に変換するには:

int x = atoi("-43");

これらの関数のドキュメントについては、http://www.acm.uiuc.edu/webmonkeys/book/c_guide/を参照してください。

于 2009-01-26T00:11:49.660 に答える
10

の言及から判断すると、文字列があり、それを整数に変換したいように聞こえますが、質問からは明確ではありparseIntません...

これを行うには、 を使用しますstrtol。この関数は よりわずかに複雑ですatoiが、エラー状態をより明確に示します。これは、(呼び出し元が提供する) ポインターを混乱させた最初の文字のアドレスで満たすことができるためです。呼び出し元は、問題のある文字を調べて、文字列が有効かどうかを判断できます。atoiとは対照的に、失われた場合は 0 を返すだけであり、これは常に役立つとは限りません。ただし、この動作に満足している場合は、それを使用することもできます。

の使用例は次のstrtolとおりです。エラーのチェックは非常に単純です。認識されない最初の文字が'\x0'文字列の末尾ではない場合、文字列は有効な int を含んでいないと見なされます。

int ParseInt(const char *s,int *i)
{
    char *ep;
    long l;

    l=strtol(s,&ep,0);

    if(*ep!=0)
        return 0;

    *i=(int)l;
    return 1;
 }

この関数は、*i に整数を入力し、文字列に有効な整数が含まれている場合は 1 を返します。それ以外の場合は、0 を返します。

于 2009-01-26T01:34:57.653 に答える
2

これについては、Steve Summit の C FAQ で説明されています。

于 2009-01-26T01:51:44.840 に答える
1

JavaparseInt()関数は文字列を解析して整数を返します。同等の C 関数はatoi(). ただし、これは質問の最初の部分と一致していないようです。整数から文字列に変換しますか、それとも文字列から整数に変換しますか?

于 2009-01-25T23:43:41.793 に答える
1

atoi()関数 (ascii から整数へ) とその親戚、atolなどをチェックアウトすることもできますatoll

また、逆の関数もあります。つまりitoa()、and co です。

于 2009-01-25T23:48:34.077 に答える
0

このサイトの準拠ソリューションを確認することをお勧めします。

于 2009-01-26T07:01:01.283 に答える
0

あなたが試すことができます:

int intval;
String stringval;
//assign a value to intval here.
stringval = String(intval);

それはトリックを行う必要があります。

于 2012-12-10T19:33:58.467 に答える