从.csv文件中的字段读取值?

时间:2011-08-04 15:06:51

标签: c++ csv

昨天我做了一个小脚本,有一些帮助来阅读.csv文件。我虽然找到了一种方法来读取第一个值并存储它,但由于某种原因它会存储最后一个值。

我存储了我认为应该是value1下的第一个值,并重新显示它以确保它正确显示并且实际上存储在可调用变量下。

有谁知道这段代码有什么问题?我想我应该使用向量,但是当我阅读我在互联网上找到的有关它们的参考表时,我有点被抛出。任何帮助表示赞赏。

#include <iostream>
#include <fstream>
#include <string>

using namespace std;

int main ()
{

    int loop = 1;
    string value;
    string value1;

    while(loop = 1)
    {

        cout << "Welcome! \n" << endl;

        ifstream myfile;

        myfile.open ("C:/Documents and Settings/RHatfield/My Documents/C++/Product Catalog Creator/Source/External/Sample.csv");

        while (myfile.good())

        getline ( myfile, value, ',' );
        cout << string ( value) << endl; 

        value1 = value;

        cout << value1;

        myfile.close();

        system("PAUSE");

        return 0;
    }


}

2 个答案:

答案 0 :(得分:1)

您的错误似乎是纯代码格式化。

while (myfile.good())

循环后没有{}。所以只重复下一行。

在读取整个文件后执行以下代码。

cout << string ( value) << endl;

因此value存储文件的最后一行。

答案 1 :(得分:1)

您可能想要更改while循环中的条件:

char separator;
int value1;
int value2;
int value3;
while (myfile >> value1)
{
    // Skip the separator, e.g. comma (',')
    myfile >> separator;

    // Read in next value.
    myfile >> value2;

    // Skip the separator, e.g. comma (',')
    myfile >> separator;

    // Read in next value.
    myfile >> value3;

    // Ignore the newline, as it is still in the buffer.
    myfile.ignore(10000, '\n');

    // Process or store values.
}

上面的代码片段不健壮,但演示了从文件读取,跳过非数字分隔符和处理行尾的概念。代码也经过优化。