C++ 文字列と数値間の変換

文字列と数値の変換を実行するには、さまざまな方法があります。

1.文字列独自の関数を使用する

数値から文字列へ: to_string()
文字列から数値へ: stoi()、stol()、stof()、stod() など。

例:

int i = 42;
string s = to_string(i);
double d = stod(s);

文字列を数値に変換する各関数では、文字列内のどの位置から変換を開始するかを選択することもでき、整数に変換するときに異なる基数を選択することもできます。詳細については、『C++入門』の 328 ページを参照してください。

2.文字列ストリームを使用する

まず、sstream ヘッダー ファイルをインクルードする必要があります。このクラスは iostream から継承し、文字列データの読み取りと書き込みが可能です。
stringstream を介して、文字列と数値を相互に直接変換できます。

例:

//数字转字符串
int num = 12;
string s;
stringstream strs;
strs << num;
strs >> s; //s = “12”
//字符串转数字
string s = "123";
int num;
stringstream strs;
strs << s;
strs >> num; //num = 123

ここでの文字列型はstringだけでなくchar[]も可能です。もちろん、C++ では、文字列やベクトルなどのコンテナーを使用できる場合は配列を使用せず、イテレーターを使用できる場合は通常のポインターを使用しないことを推奨しています。

3. sprintf、sscanfを使用する

include<stdio.h> が必要です

// 数字转字符串
sprintf(str,%d”, num);
// 字符串转数字
sscanf(str,%d”, &rsl);

次の例のように、文字列と数値を相互に変換することで、データを処理し、より柔軟に問題を解決できます。

1 ~ n の範囲内で 2、0、1、9 の数字を含む数字の数を見つけ、それらの合計を計算します。

#include <string>
#include <iostream> 

using namespace std;

int n, num = 0, sum = 0;
string s;
string numbers("2019");
int main()
{
    
    
	cin >> n;
	for (int i = 1; i <= n; ++i)
	{
    
    
		// 将数字转化为string
		s = to_string(i);
		// find_first_of()可以查找numbers中任意一个字符在s中第一次出现的位置
		if (s.find_first_of(numbers) != string::npos) {
    
    
			sum += i;
			++num;
		}
	}
	cout << "1-" << n << "范围内包含2、0、1、9的数字共有" 
	     << num << "个," << "其和为:" << sum << endl;
	return 0;
}

おすすめ

転載: blog.csdn.net/weixin_43390123/article/details/116094291