1
我只想讀取文本文件並將數據存儲到向量中。因此,價值權重應該總和,直到達到極限。前四行將被正確讀取,但以下內容不會被讀取。什麼是錯誤?在C++中錯誤地讀取文本文件
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <limits>
/*
Data.txt
John
6543
23
Max
342
2
A Team
5645
23
*/
struct entry
{
// passengers data
std::string name;
int weight; // kg
std::string group_code;
};
void reservations()
{
std::ofstream file;
file.clear();
file.open("reservations.txt");
file.close();
}
entry read_passenger(std::ifstream &stream_in)
{
entry passenger;
if (stream_in)
{
std::getline(stream_in, passenger.name);
stream_in >> passenger.weight;
std::getline(stream_in, passenger.group_code);
stream_in.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
return passenger;
}
return passenger;
}
int main(void)
{
std::ifstream stream_in("data.txt");
std::vector<entry> v; // contains the passengers data
const int limit_total_weight = 10000; // kg
int total_weight = 0; // kg
entry current;
while (!stream_in.eof())
{
current = read_passenger(stream_in);
total_weight = total_weight + current.weight;
std::cout << current.name << std::endl;
if (total_weight >= limit_total_weight)
{
break;
}
}
return 0;
}
你說的是幾乎是正確的,但你需要放置也忽略了「passenger.groupcode」之後跳過換行分隔條目。 –
哦,有空白的行。那麼,忽視就是對付它們的一種方法。 –
克萊門特貝洛:所以它的工作!謝謝 – burner007