入力ストリームからスペースで区切られたデータを読み取る方法に問題があります。
J 123 7 3 M を入力する必要があるとしましょう。最初は文字で、最後は文字です。残りはintです。
vector<int> ints;
vector<char> chars;
stringstream ss;
...
cin >> c
chars.push_back(c);
ss << c;
cin >> i;
while(ss << i) {
ints.push_back(i);
}
...
しかし、このコードは問題を解決しません。いろいろな組み合わせを試しましたが、まだ何もありません。
すべてをcharとして読み取ってからintに変換できると考えていました。
それと同様の質問があることは知っていますが、私の場合は、ダイナミ配列ではなく文字列なしで解決したいと思います(動的配列である可能性がありますが、長さは設定されていません)。
編集
私は次の方法でそのようなストラムを読むことができました:
char first, last;
int i;
std::cin >> first;
std::cout << first;
while(std::cin >> i) {
std::cout << i;
}
std::cin >> last;
std::cout << last;
ただし、1 つ問題があります。「F 1 23 2 2 W」と入力すると、F12322@ が表示されます。末尾に「@」が付いている理由がわかりません。何かご意見は?
EDIT2:
std::cin.clear();
whileループの後、問題は解決します。