list.txt
first 10
second third 20
fourth fifth 30
.
.
.
プログラムの他の場所でそれぞれのタイプとして「first」、「second」、...および10、20、...を使用できるように、最初の行を他の行とは別に読み取る従来の方法は何ですか?
ありがとう!
list.txt
first 10
second third 20
fourth fifth 30
.
.
.
プログラムの他の場所でそれぞれのタイプとして「first」、「second」、...および10、20、...を使用できるように、最初の行を他の行とは別に読み取る従来の方法は何ですか?
ありがとう!
これはあなたが考えていることですか?
ifstream fin("list.txt");
string str1, str2;
int n;
fin >> str1 >> n; // first 10
// do something with "first" and 10
while(fin >> str1 >> str2 >> n)
{
// do something with str1, str2 and n
}
struct header {
std::string name;
int number;
};
std::istream &operator>>(std::istream &is, header &h) {
return is >> h.name >> h.number;
}
struct line {
std::string first;
std::string second;
int number;
};
std::istream &operator>>(std::istream &is, line &data) {
returns is >> data.first >> data.second >> data.number;
}
int main() {
header h;
std::ifstream data("list.txt");
// read first line:
data >> h;
// now h.name and h.number are the string and number from the first line
// read the rest of the lines:
std::vector<line> lines((std::istream_iterator<line>(data),
std::istream_iterator<line>());
// now lines[i].first, lines[i].second and lines[i].number
// are the first string, second string, and number
// from the i-th line of three-field data from the file.
return 0;
}