昨天我做了一个小脚本,有一些帮助来阅读.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;
}
}
答案 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.
}
上面的代码片段不健壮,但演示了从文件读取,跳过非数字分隔符和处理行尾的概念。代码也经过优化。