私はC++の初心者であり、区切られた入力を実験しようとしています。私は、次のコードを使用して区切られたデータを取得し、それを分離します。区切られた入力を>>演算子を使って変数に区切ってください
#include <iostream>
#include <string>
int main()
{
int n1,n2,n3; char data,c;
while (std::cin >> data >> c >> n1 >> c >> n2 >> c >> n3 && c == ','){
std::cout << "Entered loop" << "\n";
std::cout << "Value:" << data << "\n";
std::cout << "Value:" << n1 << "\n";
std::cout << "Value:" << n2 << "\n";
std::cout << "Value:" << n3 << "\n";
std::cout << std::endl;
}
}
ここで入力のようなものです:私はそうのようなのstd ::文字列データと文字データを交換する場合はA、1,2,3 しかし:
#include <iostream>
#include <string>
int main()
{
int n1,n2,n3; std::string data; char c;
while (std::cin >> data >> c >> n1 >> c >> n2 >> c >> n3 && c == ','){
std::cout << "Entered loop" << "\n";
std::cout << "Value:" << data << "\n";
std::cout << "Value:" << n1 << "\n";
std::cout << "Value:" << n2 << "\n";
std::cout << "Value:" << n3 << "\n";
std::cout << std::endl;
}
}
のような入力では:ABCD、 1,2,3 デバッグ中の「入力されたループ」出力は、whileループ条件が決して満たされないことを意味します。
charを文字列に置き換えると、何が問題になるのですか。
文字データをcharデータ[4]で置き換えて、次の空白まで読む問題を解決するべきではありませんか? charデータ[4]で置き換えても、やっていません。区切り文字が気になるまで読み込むgetlineメソッドについて知っています。 – DuringTuring
'演算子>>は配列が4文字であることをどのように知っていますか?私の理解では、関数に渡されると、配列は最初のスロットへのポインタに減衰します。終端文字はどうですか?不具合を避けるために、 'istream :: read'関数を使用して、読み込まれる文字数を制限することができます。別の考え方は、 'std :: getline'を使い、文字列を切り捨てるか、文字列の長さが4だけであることを検証することです。 –