为什么我不能让这个数组从文件中正确地提取字符串,它第一次通过时很好,但是当它循环时它失败了?

Why can't I get this array to properly pull string from a file, it does fine the first pass, but when it loops it fails?

我正在尝试从文本文件中提取一系列视频游戏机名称。文本文件是这样读的,

Nintendo Entertainment System
57
Sega Genesis
34
Microsoft Xbox 360
58
Sony PlayStation 4
261
Atari 2600
26
Nintendo Game Cube
52

所以我设置的是将名称保存在数组中,然后是它们的价格,然后重复。问题似乎是它获得了第一个控制台名称,获得了第一个价格,然后当它重复时失败并且没有更多的名称加载并且价格变为 -858993460。

这是我的 loadArrays 函数 -

void loadArrays(string consoleNames[], int consolePrices[], int& size)

{
    ifstream dataFile("prices.txt");

    int i = 0;
    int cont = 1;

    do
    {
        getline(dataFile, consoleNames[i]);
        dataFile >> consolePrices[i];
    
        i++;
        size += 1;
        /*if (consolePrices = 0)
        {
            size = size - 1;
            for (int j = 0; i < size; j++)
            {
                consoleNames[j] = consoleNames[j + 1];
                consolePrices[j] = consolePrices[j + 1];
            }
            cont = 0;
        }*/
        if (size == 6)
            break;
    } while (cont == 1);
}

这就是我得到的 Failed Output

问题可能是 getline 没有正确移动到下一个字符串?

dataFile >> consolePrices[i]; 在第一次迭代时在 istream 中留下 \n

然后 getline(dataFile, consoleNames[i]); 在第二次迭代中提取新的行符号,你得到空字符串。之后 dataFile >> consolePrices[i]; 尝试读取 int 但遇到字符串 Sega Genesis,使 consolePrices[i]; 未初始化且 istream 失败。进一步的迭代无法读取失败的 istream。