通常、質問を書くとき、数字と文字列をどのように変換するかという問題に常に遭遇します。一般的な方法を使用する場合。
文字列を数字に
変更する通常のルーチン。QinJiuzhaoのアルゴリズム
res = res * base +各桁の桁(上位から下位へ)
string a;
int res=0;
for(int i=0;i<a.length();i++)
res=res*10+a[i]-'0';
数字は文字列になります。
これは、数値19234を文字列に変更する方法です。
#include<iostream>
#include<algorithm>
using namespace std;
int main(void)
{
int s=19234;
string a;
while(s)
{
a+=s%10+'0';
s/=10;
}
reverse(a.begin(),a.end() );
cout<<a;
}
数値を文字列に変換する方法は逆関数を使用します。コードの量が非常に多く、使用する価値がないと思います。もっと簡単な方法はありますか?はい。
その後、冬休みの最初の10日間にオンラインクラスを受講し、文字列ストリーミングと呼ばれる非常に優れたソリューションを学びました。
この変数名をstringstreamします
次に、これはsstreamヘッダーファイルにあります。どのように使用すればよいですか。
#include<iostream>
#include<algorithm>
#include<sstream>
using namespace std;
int main(void)
{
string a="19235";
int digit;
stringstream ss;
ss<<a;
ss>>digit;
cout<<digit;
}
予防
スペースが表示されている場合、元の文字列にスペースを含めることはできません
#include<iostream>
#include<algorithm>
#include<sstream>
using namespace std;
int main(void)
{
string a="192 35";
int digit;
stringstream ss;
ss<<a;
ss>>digit;
cout<<digit;
}
質問をしているとき、このような状況が発生する可能性があります。質問の
例AcWing 1204.間違ったチケット各行
の番号を入力すると、その数がわかりません。
この文字列ストリームを使用できます
#include<iostream>
#include<algorithm>
#include<sstream>
using namespace std;
const int N=1e5+10,Inf=1e7;
int st[N];
int main(void)
{
int i=0;
int n;
scanf("%d\n",&n);
cout<<n<<endl;
string a;
while(getline(cin,a))
{
stringstream ss(a);
i=0;
while(ss>>st[i]) i++;
for(int j=0;j<i;j++)
printf("%4d ",st[j]);
puts("");
}
}
すべての数値が出力されていることを確認し、それをどのように使用するかを確認できます。
1.前処理、sstreamヘッダーファイルを使用する必要があります。
#include<sstream>
2、初期化
stringstream ss;
この形式の場合
stringstream ss(a);
に相当
stringstream ss;
ss<<a;
これらは初期化の2つの方法です。
三、
int digit;
double digi;
float dig;
変換する数値のタイプを選択します。
ss>>digit;
ss>>digi;
ss>>dig;
変換を実現するために、この時点で話しましょう。ss>> Digitが変換されると、失敗すると0が返される
ので、このようなプロセスを実現できます。
while(ss>>digit[i]) i++;
把ss保存的多个数保存在digit数组里
これは、私たちが学ぶ必要のあるstringstreamの使用法です。
この記事を更新し続けてください~~、次のステップはsscanfの使用法とssprintfの使用法を紹介することです