c++文字列と整数の相互変換[整理]

3315 ワード

1.ライブラリ関数による変換:atoi,stol,strtoi,itoa
atoi:
atoi()関数はc標準ライブラリに属し、ヘッダファイルを追加する.
atoi()関数プロトタイプ
int atoi(const char *str)
  • str--整数に変換する文字列
  • 関数の説明:パラメータstrが指す文字列を整数(タイプint型)に変換する.有効な変換が実行されない場合は、ゼロ値を返します.
    strtol:
    strtol()関数はc標準ライブラリに属し、ヘッダファイルを追加する.
    strtol()関数プロトタイプ
    long int strtol(const char *str, char **endptr, int base)
  • str--長い整数に変換する文字列
  • endptr--char*のタイプのオブジェクトへの参照です.その値は、nullptr
  • のnullptr に設定できる関数によってstrの数値に設定された次の文字(数値の後ろにある文字列を保持)です.
  • base--基本数は、2と36(含む)の間にある必要があります.または、特殊な値0である必要があります.進数(10,2,16,8)
  • が理解できます.
    関数の説明:パラメータstrが指す文字列を所与のbaseに従って長い整数(long int型のタイプ)に変換し、有効な変換が実行されなければゼロ値を返す.
    注意:atoiとstrtolはすべてcの中の関数で、それらのパラメータはすべてconst char*なので、stringを使う時、c_を調整しなければなりませんstr()メソッドは、char*の文字列に変換します.
    stoi:
    stoiはstringライブラリの関数です.ヘッダファイルを追加する必要があります.
    stoi関数プロトタイプ
    int stoi (const string&  str, size_t* idx = 0, int base = 10);
    int stoi (const wstring& str, size_t* idx = 0, int base = 10);
  • str--プログラム全体を変換するstringオブジェクト
  • idex--数値の後ろの最初の文字のアドレスはnullptr
  • です.
  • base--進数、デフォルトは10
  • です.
    関数の説明:strオブジェクトを整数(int型)に変換します.変換に成功すると、変換後の整数が戻る.変換に失敗すると異常が放出されるので、使用時に必要な異常処理があるはずです.
    itoa:
    itoa()関数はc標準ライブラリに属し、ヘッダファイルを追加する.
    char *itoa( int value, char *string,int radix);
  • value--変換したいデータ
  • string--ターゲット文字列のアドレス
  • redix--変換後の進数、例えば10,16などの
  • 関数の説明:整数を文字列に変換し、この文字列を指すポインタを返します.
    2.フォーマット関数の利用:sprintf,sscanf
    sprintf:
    ヘッダファイルを追加
    関数のプロトタイプ:
    int sprintf( char *buffer, const char *format, [ argument] … )
  • buffer:char型ポインタ、書き込む文字列のバッファ
  • を指す
  • format:フォーマット文字列
  • [argument]...:任意のタイプのデータ
  • 関数の説明:フォーマットされたデータを文字列バッファに書き込む.bufferに書き込む文字数を返し、エラーが発生すると-1を返す. 
    #include 
    int main( void )
     
    {
       char  buffer[200], s[] = "student", ch = 'l';
       int   i = 35;
       //            buffer
       sprintf( buffer, "   String:    %s
    ", s ); sprintf( buffer, " Character: %c
    ", ch); sprintf( buffer, " Integer: %d
    ", i ); return 0; }

    sscanf:
    ヘッダファイルを追加
    関数のプロトタイプ:
    int sscanf( const char *buffer, const char *format, [ argument ]...);
  • buffer:char型ポインタ、書き込む文字列のバッファ
  • を指す
  • format:フォーマット文字列
  • [argument]...:任意のタイプのデータ
  • 関数の説明:フォーマットされた文字列のデータを読み込みます.sscanfはscanfと同様に入力に用いられるが,後者はキーボード(stdin)を入力源とし,前者は固定文字列を入力源とする.成功するとパラメータ数を返し、失敗すると-1を返す.
    #include 
    int main( void )
     
    {
       char  buffer[200], s[] = "student", ch = 'l';
       int   i = 35;
       //            buffer
       sprintf( buffer, "   String:    %s
    ", s ); sprintf( buffer, " Character: %c
    ", &ch); sprintf( buffer, " Integer: %d
    ", &i ); return 0; }

    3.stringstreamクラスの利用
    ヘッダファイルを追加
    文字列から整数:
    stringstream sstr(str);
    int x;
    sstr >> x;(  sstr     )

    整数から文字列:
    stringstream sstr;
    int x;
    sstr << x;
    string str = sstr.str();

    注意:stringstreamはメモリをアクティブに解放しません.繰り返し使用するにはstreamなどの明確なキャッシュが必要です.str(「」)またはstream.clear().