c string conversion functions
このチュートリアルでは、文字列をint&doubleに変換したり、intを文字列に変換したりするために使用できるC ++文字列変換関数について説明します。
C ++アプリケーションを開発するときは、文字列を整数や倍精度浮動小数点数などの数値に変換するのが一般的です。
このトピックでは、文字列をint&doubleに効果的に変換し、数値を文字列に効果的に変換するために使用できる関数について説明します。
=> ここで人気のあるC ++トレーニングシリーズを読んでください。
学習内容:
swfファイルとは何ですか?
C ++文字列変換関数
C ++を使用してアプリケーションをプログラムする場合、データをあるタイプから別のタイプに変換する必要があります。データの変換は、既存のデータを新しいタイプに変換するときにデータがまったく失われないようにする必要があります。これは、文字列データを数値に変換する場合、またはその逆の場合に特に当てはまります。
このチュートリアルでは、std :: stringオブジェクトをintegerやdoubleなどの数値データ型に変換するためのさまざまな関数について説明します。
C ++で文字列を数値型に変換する
一般に、C ++で文字列を数値に変換する一般的な方法は2つあります。
- すべての数値データ型を複製するstoiおよびatoi関数を使用します。
- stringstreamクラスを使用します。
それぞれの方法について詳しく説明します。
stoiおよびatoi関数の使用
std :: stringクラスは、stringをinteger、long、double、floatなどに変換するためのさまざまな関数をサポートしています。std:: stringでサポートされている変換関数は、次のように表形式になっています。
関数 | 説明 |
---|---|
立っている ストール ストール | 文字列を整数に変換します(long型とlong long型を含む)。 |
atoi 環礁 環礁 | バイト文字列を整数に変換します(long型とlong long型を含む)。 |
立っていた ほこり 盗んだ | バイト文字列を浮動小数点値(float、double、およびlong double型を含む)に変換します。 |
ストール ストール | バイト文字列をunsignedinteger(unsignedlongおよびunsignedlong long型を含む)に変換します。 |
注意: バイト文字列(atoi)を変換する関数を除いて、他のすべての変換関数はC ++ 11以降に存在します。次に、文字列をintに、文字列をdoubleに変換する変換関数について説明します。
stoi()およびatoi()を使用したintへの文字列
持続()
関数プロトタイプ: stoi(const std :: string&str、std :: size_t * pos = 0、int base = 10);
パラメーター):
str =>変換する文字列
pos =>処理された文字数を格納する整数のアドレス。デフォルト= 0
base =>基数;デフォルト= 0
戻り値: 指定された文字列に相当する整数。
例外: std :: invalid_argument =>変換を実行できない場合。
Std :: out_of_range =>変換された値が結果タイプの範囲外の場合。
説明: 関数stoi()は引数として文字列を取り、整数値を返します。変換された値が範囲外の場合、または変換を実行できない場合は、例外がスローされます。
この関数をよりよく理解するために、プログラミングの例を見てみましょう。
#include #include using namespace std; int main() { string mystr1 = '53'; string mystr2 = '3.142'; string mystr3 = '31477 with char'; int strint1 = stoi(mystr1); int strint2 = stoi(mystr2); int strint3 = stoi(mystr3); cout << 'stoi('' << mystr1 << '') is ' << strint1 << '
'; cout << 'stoi('' << mystr2 << '') is ' << strint2 << '
'; cout << 'stoi('' << mystr3 << '') is ' << strint3 << '
'; }
出力:
スタンド(「53」)は53です
スタンド(「3,142」)は3です
stoi(“ 31477 with char”)は31477です
上記のプログラムでは、3つの異なる文字列でstoi関数を使用しました。文字列データを整数値に変換する際、関数は空白またはその他の文字を破棄することに注意してください。
したがって、mystr2(3.142)の場合、関数は小数点以下をすべて破棄しました。同様に、mystr3(“ 31477 with char”)の場合、数値のみが考慮されました。文字列の他の内容は破棄されました。
atoi()
関数プロトタイプ: int atoi(const char * str);
パラメーター): str => nullで終了するバイト文字列へのポインタ。
戻り値:
Success =>引数strに対応する整数値。
失敗=>変換された値が範囲外の場合は未定義。
0 =>変換を実行できない場合。
説明: この関数は、バイト文字列を整数値に変換します。関数atoi()は、空白以外の文字が見つかるまで空白を破棄し、次に文字を1つずつ取得して有効な整数表現を形成し、それを整数に変換します。
atoi関数の例
#include #include using namespace std; int main() { const char *mystr1 = '24'; const char *mystr2 = '3.142'; const char *mystr3 = '23446 with char'; const char *mystr4 = 'words with 3'; int mynum1 = atoi(mystr1); int mynum2 = atoi(mystr2); int mynum3 = atoi(mystr3); int mynum4 = atoi(mystr4); cout << 'atoi('' << mystr1 << '') is ' << mynum1 << '
'; cout << 'atoi('' << mystr2 << '') is ' << mynum2 << '
'; cout << 'atoi('' << mystr3 << '') is ' << mynum3 << '
'; cout << 'atoi('' << mystr4 << '') is ' << mynum4 << '
'; }
出力:
atoi(“ 24”)は24です
atoi(“ 3.142”)は3です
atoi(“ 23446 with char”)は23446です
atoi(「3の単語」)は0です
上記のプログラムに示されているように、atoi関数はバイト文字列を引数として取り、それを整数値に変換します。空白またはその他の文字は破棄されます。変換された値が範囲外の場合、0が返されます。
stod()を使用して2倍にする文字列
関数プロトタイプ: stod(const std :: string&str、std :: size_t * pos = 0);
パラメーター):
str =>変換する文字列
pos =>処理された文字数を格納する整数のアドレス。デフォルト= 0
戻り値: 指定された文字列に相当するdouble値。
例外:
std :: invalid_argument =>変換を実行できない場合。
std :: out_of_range =>変換された値が結果タイプの範囲外の場合。
説明: この関数は、文字列を浮動小数点値に変換します。関数stod()は、空白以外の文字が見つかるまで空白を破棄し、文字を1つずつ取得して有効な浮動小数点数表現を形成し、それを浮動小数点に変換します。
この関数を示す例を見てみましょう。
#include #include using namespace std; int main() { const char *mystr1 = '24'; const char *mystr2 = '3.142'; const char *mystr3 = '23446 with char'; double mynum1 = stod(mystr1); double mynum2 = stod(mystr2); double mynum3 = stod(mystr3); cout << 'stod('' << mystr1 << '') is ' << mynum1 << '
'; cout << 'stod('' << mystr2 << '') is ' << mynum2 << '
'; cout << 'stod('' << mystr3 << '') is ' << mynum3 << '
'; }
出力:
stod(“ 24”)は24です
stod(“ 3.142”)は3.142です
stod(“ 23446 with char”)は23446です
上記のプログラムは、「stod」関数の使用法を示しています。出力は、指定された文字列の変換されたdouble値を示します。
stringstreamクラスの使用
stringstreamクラスを使用するのが、文字列値を数値に変換する最も簡単な方法です。
stringstreamクラスについては、以降のチュートリアルで詳しく学習します。以下に示すのは、文字列から数値への変換を示すC ++プログラムです。
#include #include using namespace std; int main() { string str = '2508'; stringstream sstream(str); int num = 0; sstream >> num; double dNum=0.0; string doublestr = '3.142'; stringstream dstream(doublestr); dstream >>dNum; cout << 'Value of num : ' << num< 出力:
numの値:2508
dNumの値:3.142
上記のプログラムでは、文字列オブジェクトを宣言していることがわかります。次に、stringstreamオブジェクトを宣言し、文字列をこのオブジェクトに渡して、文字列がstringstreamオブジェクトに変換されるようにします。次に、このstringstreamオブジェクトは、stringstreamオブジェクトを整数に変換する「>>」演算子を使用して整数値に渡されます。
同様に、文字列もdoubleに変換しました。 「>>」演算子がデータ型をサポートしている限り、stringstreamオブジェクトを使用して文字列を任意のデータ型に変換できます。
C ++でintをstringに変換する
数値を文字列値に変換することもできます。数値を文字列値に変換する方法は2つあり、以下で説明します。
to_string()関数の使用
関数プロトタイプ: std :: string to_string(type value);
パラメーター): value =>変換する数値
戻り値: 変換された値を保持する文字列値。
例外: std :: bad_allocをスローする可能性があります
説明: この関数to_string()は、引数として渡された数値を文字列型に変換し、文字列を返します。
C ++プログラムを使用したこの関数の例を見てみましょう。
#include #include // used for string and to_string() using namespace std; int main() { int int_val = 20; float flt_val = 30.50; string str_int = to_string(int_val); string str_float = to_string(flt_val); cout << 'The string representation of integer : '; cout << str_int << endl; cout << 'The string representation of float : '; cout << str_float << endl; return 0; }
出力:
整数の文字列表現:20 floatの文字列表現:30.500000
ここでは、それぞれ整数型と浮動小数点型の2つの変数があります。次に、整数と浮動小数点引数を使用してto_stringメソッドを2回呼び出し、両方の値を文字列値に変換します。最後に、変換された値を表示します。
to_stringメソッドでは有効桁数がゼロになる可能性があるため、浮動小数点値を文字列に変換すると予期しない結果が生じる可能性があることに注意してください。
stringstreamクラスの使用
stringstreamクラスを使用して、stringstreamは最初に、数値をストリームとしてオブジェクトに挿入するストリームオブジェクトを宣言します。次に、「str()」関数を使用して、数値を内部的に文字列に変換します。
例:
#include #include #include using namespace std; int main() { int num = 26082019; double num_d = 3.142; ostringstream mystr; ostringstream my_dstr; mystr << num; string resultstr = mystr.str(); my_dstr << num_d; string d_str = my_dstr.str(); cout << 'The string formed from integer is : '; cout << resultstr << endl; cout << 'The string formed from double is : '; cout << d_str << endl; return 0; } #include #include #include using namespace std; int main() { int num = 26082019; double num_d = 3.142; ostringstream mystr; ostringstream my_dstr; mystr << num; string resultstr = mystr.str(); my_dstr << num_d; string d_str = my_dstr.str(); cout << 'The string formed from integer is : '; cout << resultstr << endl; cout << 'The string formed from double is : '; cout << d_str << endl; return 0; }
出力:
整数から形成される文字列は次のとおりです:26082019
ダブルから形成される文字列は次のとおりです。3.142
アニメを見るのに最適なアニメサイト
このリストでは、整数値と倍精度値を定義しています。次に、数値をstringstreamオブジェクトに変換するために使用するostringstreamオブジェクトがあります。これは「<<’ operator. Next, we use the str() method on a stringstream object to convert it to a string.
結論
このチュートリアルでは、文字列を数値型に変換し、数値型を文字列に戻す変換関数について説明しました。 stoi()、stod()、atoi()、to_string()関数の関数と例を詳しく見てきました。また、前述の変換を行うのに役立つstringstreamクラスの関数とメソッドのいくつかについても説明しました。
推奨読書= >> Javaで文字列を整数に変換する そして JavaでIntをStringに変換するメソッド
次のチュートリアルでは、文字データ型の変換関数について学習します。
=> ここで詳細なC ++トレーニングチュートリアルを確認してください。
推奨読書