C++文字列と数字の相互変換方法のまとめ

8641 ワード

C++文字列と数字の相互変換方法のまとめ
一、sscanfとsprintf
sscanf(ソース文字列、フォーマット、宛先変数)文字列配列変換数値理解string+scanf sprintf(宛先文字列、フォーマット、ソース変数)数値変換文字列配列理解string+printfたとえば、
#include <cstdio>
int main(){
    int n;
    char str[10] = "123";
    sscanf(str,"%d",&n);    //              
    printf("%d",n);
}

出力は
123
#include <cstdio>
int main(){
    int n = 1234;
    char str[10];
    sprintf(str,"%d",n);    //            
    printf("%s",str);
}

出力は
1234

二、atoi、stoi文字列回転数
atoi、stoiはいずれもcstringヘッダファイルの下の文字処理関数であり、文字列をデジタルatoi(const*char)に変換する役割を果たす.パラメータがstringタイプであれば、必ずc_str()メソッドは、(標準c文字列配列を指すポインタを返す)stoi(const*string)関数名string to integer略語を処理し、atoi()は範囲検査を行わない.一方stoi()は範囲検査を行い、デフォルトはintであり、範囲を超えた場合はエラーを報告する
#include <iostream>
#include <string>
using namespace std;
int main()
{
    string s1 = "2147482", s2 = "-214748";
    string s3 = "214748666666663", s4 = "-21474836488";
    cout << stoi(s1) << endl;
    cout << stoi(s2) << endl;
    cout << atoi(s3.c_str()) << endl;
    cout << atoi(s4.c_str()) << endl;
    return 0;
}
2147482
-214748
301866663
-8

三、数値回転文字列
●itoa():整数値を文字列に変換します.●ltoa():ロング整数値を文字列に変換します.●ultoa():符号なしロング整数値を文字列に変換します.●gcvt():浮動小数点型数を文字列に変換し、四捨五入する.●ecvt():二重精度浮動小数点型値を文字列に変換し、変換結果に10進数小数点は含まれません.●fcvt():ビット数を変換精度として指定し、残りはecvt()とする.
# include <stdio.h>
# include <stdlib.h>
int main ()
{
    int num_int = 435;
    double num_double = 435.10f;
    char str_int[30];
    char str_double[30];  
    itoa(num_int, str_int, 10);  //   num_int     str_int,10  10  
    gcvt(num_double, 8, str_double);  //8    
    printf("str_int: %s
"
, str_int); printf("str_double: %s
"
, str_double); return 0; }