私はファイル内に行を持ち、その行にある行はそれぞれスペースで区切られています。ここではラインのsimpliefied例です:文字列をスペースで区切る
単一フィールド内の208 "Person" "Anne Myers" "unsigned long" "hello" -1 false false false
、いくつかの単語はスペースで区切られています。すなわち、「Anne Myers」。これは解析に問題です。
提案がありますか?出力はさらに処理するために9つのフィールドにする必要があります。 私の場合、フィールド内のスペースをある文字で置き換えることは実現できません。
編集:すべての行が同じフィールド順序に従います。
class field {
std::string content;
public:
friend std::istream &operator>>(std::istream &is, field &f) {
char ch;
// skip whitespace, then read one character
is >> ch;
// If it's a quote, read to the next quote
if (ch == '"')
std::getline(is, f.content, '"');
else {
// otherwise put it back, and read until white-space:
is.unget();
std::getline(is, f.content);
}
return is;
}
// While we're at it, I'm going to define output so we can see what was
// read in a single field easily:
friend std::ostream &operator<<(std::ostream &os, field const &f) {
return os << "[" << f.content << "]";
}
};
はその後、我々は、単一の行のレコードタイプを定義することができ、適切なフィールドに、このタイプを使用しています。
すべての行が同じフィールド順序とタイプに従っていますか?その場合は、正規表現を使用することができます。 – Sergey
@Sergey go regex – mash
この場合、何が出力されるべきですか。 – Shravan40