0

我正在使用从文件中读取数据wifstream

txt 文件如下所示:

1,2,3,4,5,6,7
2,3,4,5,6,7,8
...
...

每个数字都是我的程序所需的 id,逗号是分隔符这是我的代码

wifstream inputFile(FILE_PATH);
if(inputFile)
{
    wchar_t regex;
    int id;
    while(inputFile)
    {
        inputFile>>id;
        inputFile.get(regex);

        cout << id << ", ";                         
    }
    inputFile.close();
}

这段代码工作得很好,直到我改变一次读取一行的读取方案,我想在行上做类似的事情,这样我就可以从行中读取数据,而流的缓冲区会弹出一次数据它已经像上面一样被阅读了。但我无法让它工作。这是我的代码

    wifstream inputFile(FILE_PATH);
    wstring line;
    if(inputFile)
    {
        while(!inputFile.eof())
        {

            std::getline(inputFile, line);

            for(int i=0; i<line.length(); i+=2)
            {
                int id;
                wchar_t regex;
                wstringstream(line)>>id; // doesn't work as it keep getting the same number
                wstringstream(line).get(regex);

                cout << id << ", ";
            }
            cout << endl;

        }
        inputFile.close();
    }

我认为它不起作用的原因是我没有正确使用流并且它一直在第一个索引处读取 id 并且无论我使用多少次都不会进步>>(无论如何可能不是正确的使用方式),我也试过wifstream了,也没用。

我该如何解决这个问题?

4

1 回答 1

1

wstringstream每次使用它时,您都在重新创建它。将创建移出循环:

wifstream inputFile(FILE_PATH);
wstring line;
if(inputFile)
{
    while(!inputFile.eof())
    {

        std::getline(inputFile, line);

        wstringstream istring(line);
        for(int i=0; i<line.length(); i+=2)
        {
            int id;
            wchar_t regex;
            istring>>id;
            istring.get(regex);

            cout << id << ", ";
        }
        cout << endl;

    }
    inputFile.close();
}
于 2013-02-23T15:37:21.400 回答