C++ 阅读多个列表

C++ 阅读多个列表,c++,list,C++,List,我正在做一个项目,我需要从一个文本文件中读取多个列表。除了读取它们之外,它还报告了基于读入的INT的一些计算。文件读取在列表开头的哨兵处结束 我用来测试的列表是: 9999 //sent value 636.9 // number to be ignored First 4 8 15 16 23 42 Second 0.0 9999 我遇到的问题是,我的代码正确地读取并存储了第一个列表的数据,但是当循环再次执行时,它不会读取第二个列表 我的主要循环是: infile >> sen

我正在做一个项目,我需要从一个文本文件中读取多个列表。除了读取它们之外,它还报告了基于读入的INT的一些计算。文件读取在列表开头的哨兵处结束

我用来测试的列表是:

9999  //sent value
636.9 // number to be ignored
First
4
8
15
16
23
42
Second
0.0
9999
我遇到的问题是,我的代码正确地读取并存储了第一个列表的数据,但是当循环再次执行时,它不会读取第二个列表

我的主要循环是:

infile >> sent;
infile >> inX;

while (!infile.fail())
{
    inX = 0;
    while (inX != sent)
    {
        int dSize = 0;
        storeNames(listNames, infile);
        ReadData(theData, infile);
        cout << listNames[count] << endl;
        cout << "Size is\t\t\t" << theData.size() << endl;
        if (theData.size() >= 1)
        {
            ComputeStats(theData, meanValue, secondHigh);
            DisplayStats(meanValue, secondHigh);
            dSize = theData.size();
            inX = theData[dSize - 1];
        }

        theData.clear();
        count++;
    }
}
infle>>已发送;
infle>>inX;
而(!infle.fail())
{
inX=0;
while(inX!=已发送)
{
int-dSize=0;
店名(列表名、填充);
读取数据(数据、填充);
姓名;
listNames.push_back(名称);
}
非常感谢您的帮助

while(在>>数字中)

考虑到上面的代码,您是否在流失败后恢复流状态?readData将消耗所有内容,之后需要恢复流的状态,如果您想再次读取,请将其向后移动

可以找到正在恢复的istream状态

是否需要移动seekg取决于是否要再次使用相同的数据,否则可能需要将流指针移动到下一个数据节

while(在>>数字中)

考虑到上面的代码,您是否在流失败后恢复流状态?readData将消耗所有内容,之后需要恢复流的状态,如果您想再次读取,请将其向后移动

可以找到正在恢复的istream状态

是否需要移动seekg取决于是否要再次使用相同的数据,否则可能需要将流指针移动到下一个数据节

while(在>>数字中)

考虑到上面的代码,您是否在流失败后恢复流状态?readData将消耗所有内容,之后需要恢复流的状态,如果您想再次读取,请将其向后移动

可以找到正在恢复的istream状态

是否需要移动seekg取决于是否要再次使用相同的数据,否则可能需要将流指针移动到下一个数据节

while(在>>数字中)

考虑到上面的代码,您是否在流失败后恢复流状态?readData将消耗所有内容,之后需要恢复流的状态,如果您想再次读取,请将其向后移动

可以找到正在恢复的istream状态


是否需要移动seekg取决于是否要再次使用相同的数据,否则可能需要将流指针移动到下一个数据节。

输入文件似乎有问题。最好的方法是使用调试器进行逐步调试。您能显示您的输入文件吗?我已经使用了调试器,这是input文件.9999 636.9前4 8 15 16 23 42秒0.0 9999似乎是您的输入文件的问题。最好的做法是使用调试器逐步调试。您能显示您的输入文件吗?我已经使用了调试器,这是输入文件。9999 636.9前4 8 15 16 23 42秒0.0 9999似乎是y的问题我们的输入文件。最好的办法是使用调试器逐步调试。你能显示你的输入文件吗?我已经使用了调试器,这是输入文件。9999636.9前4 8 15 16 23 42秒0.0 9999似乎是输入文件的问题。最好的办法是使用调试器逐步调试。你能显示你的输入文件吗le?我已经完成了调试器,这是输入文件。9999 636.9 First 4 8 15 16 23 42 Second 0.0 9999我想我不知道。我该怎么做?我不知道。我该怎么做?我不知道。我该怎么做?我不知道。我该怎么做?我不知道。我该怎么做?
void ReadData(vector<int>& theData, ifstream& in)
{
    if (in.is_open())
    {
        int number;
        while (in >> number)
        {
            theData.push_back(number);

        }
    }
}
void storeNames(vector<string>& listNames, ifstream& in)
{
    string name;
    in >> name;
    listNames.push_back(name);
}