[ad_1]
Q. 質問は、1,2,3 のような入力を取り、1(\n)2(\n)3 を出力することです..
そのためにstringstreamを使用していますが、最後の整数については、最後と最初の整数を一緒に取る整数の問題を引き起こしています
-> 区切り文字 (,) を使用した getline や、「,」を「\n」に置き換える関数の作成など、他の方法も認識しています。
-> この stringstream プログラムの間違いを見つけたい..
私が試したこと:
int main() { /* Enter your code here. Read input from STDIN. Print output to STDOUT */ char waste; int a,b,c; string input; cin >> input; stringstream ss; ss << input; ss >> a; ss << input; ss >> waste; ss << input; ss >> b; ss << input; ss >> waste; ss << input; ss >> c; cout << a << endl << b << endl << c << endl; return 0; }
入力
1,2,3
出力
1
2
31 (入力文字列の最初の文字と最後の文字を取りました)
期待される出力
1
2
3
変化する
入力が 1,2,3 ではなく 1,2,3/ の場合、正しく動作しています
これ
C++
#include <iostream> #include <sstream> using namespace std; int main() { // Enter your code here. Read input from STDIN. Print output to STDOUT char waste; int a,b,c; string input; cin >> input; stringstream ss(input); ss >> a >> waste >> b >> waste >> c; cout << a << "\n" << b << "\n" << c << "\n"; return 0; }
私のために働きます。
完全な文字列テキストを読んでいます ("1,2,3"
) の中へ ss
毎回、1文字だけではありません。 コードを次のように変更して、私の意味を確認してください。
C++
char waste; int a,b,c; string input; cin >> input; stringstream ss; ss << input; cout << "ss: " << ss.str() << endl; ss >> a; ss << input; ss >> waste; cout << "ss: " << ss.str() << endl; ss << input; ss >> b; ss << input; ss >> waste; cout << "ss: " << ss.str() << endl; ss << input; ss >> c; cout << a << endl << b << endl << c << endl;
[ad_2]
Source link
コメント