我想用c ++读取csv文件,所以这是我的代码
int main(){
ifstream classFile("class.csv");
vector<string> classData;
while (getline(classFile, line,',')) // there is input overload classfile
{
classData.push_back(line);
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的问题:我的问题是当它读取每行的最后一列时(因为它没有用逗号分隔),它读取最后一列数据和下一行数据的第一列,例如,如果我的数据是
className,classLocation,c ++教授,图书馆,约翰
然后它读起来像className/classLocation/Professor c ++/Library/John
无论如何,我可以将我的最后一列与下一行中的第一列分开吗?谢谢,抱歉这令人困惑
小智 19
逐行读取文件:
std::string line;
while(std::getline(stream, line)) ...
Run Code Online (Sandbox Code Playgroud)
将每一行传递给istingstream并阅读字段:
std::istringstream s(line);
std::string field;
while (getline(s, field,',')) ...
Run Code Online (Sandbox Code Playgroud)
免责声明:这是对csv文件的简化解析.
抱歉,我可以在这个线程中加入一些普通的 C 代码吗?
读取 csv 非常清楚:
#include <stdio.h>
int main()
{
float f1, f2;
FILE *fp;
fp = fopen("file.csv", "r");
while (fscanf(fp, "%g,%g\n", &f1, &f2) == 2)
printf("%g\n", f1+f2);
}
Run Code Online (Sandbox Code Playgroud)
毫无疑问,它应该在 C++ 工作的地方工作。
在 中while,我们检查 fscanf 找到了多少个对象:fscanf(fp, "%g,%g\n", &f1, &f2) == 2-- fscanf 返回它找到的对象数。
我希望这对某人有帮助。
(如果有人想查看更多信息fscanf并阅读文件——请留下一些评论。)
| 归档时间: |
|
| 查看次数: |
36509 次 |
| 最近记录: |