C++如何读取CSV文件的一行多个数据?

viqlegg 2015-03-08 02:13:12
像图片中,其实只有四行数据,但每一行的数据都很多,而且数目不定,这种csv文件怎么读取和在程序中输出?

...全文
2364 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
核桃不好吃 2016-10-18
  • 打赏
  • 举报
回复
引用 8 楼 cjqpker 的回复:
给你示例代码

#include <iostream>
#include <sstream>
#include <fstream>

using namespace std;

int main()
{
	string line, number;
	ifstream f("D:\\test.txt", ifstream::_Nocreate);
	if (f.fail())
	{
		cout << "Cannot open file" << endl;
		return -1;
	}
	while(std::getline(f, line))
	{
		istringstream is(line);
		while(std::getline(is, number, ','))
		{
			cout << number << "  ";
		}
		cout << endl;
	}
}
这个非常棒,简单实用
赵4老师 2015-03-09
  • 打赏
  • 举报
回复
仅供参考:
#include <stdio.h>
char s[]="123 ab 4";
char *p;
int v,n,k;
void main() {
    p=s;
    while (1) {
        k=sscanf(p,"%d%n",&v,&n);
        printf("k,v,n=%d,%d,%d\n",k,v,n);
        if (1==k) {
            p+=n;
        } else if (0==k) {
            printf("skip char[%c]\n",p[0]);
            p++;
        } else {//EOF==k
            break;
        }
    }
    printf("End.\n");
}
//k,v,n=1,123,3
//k,v,n=0,123,3
//skip char[ ]
//k,v,n=0,123,3
//skip char[a]
//k,v,n=0,123,3
//skip char[b]
//k,v,n=1,4,2
//k,v,n=-1,4,2
//End.
假正经的班长 2015-03-09
  • 打赏
  • 举报
回复
给你示例代码

#include <iostream>
#include <sstream>
#include <fstream>

using namespace std;

int main()
{
	string line, number;
	ifstream f("D:\\test.txt", ifstream::_Nocreate);
	if (f.fail())
	{
		cout << "Cannot open file" << endl;
		return -1;
	}
	while(std::getline(f, line))
	{
		istringstream is(line);
		while(std::getline(is, number, ','))
		{
			cout << number << "  ";
		}
		cout << endl;
	}
}
sniffer12345 2015-03-08
  • 打赏
  • 举报
回复
引用 3 楼 u012890357 的回复:
[quote=引用 2 楼 taodm 的回复:] C++啊,读这个太简单了吧 先getline,然后用istringstream分拆。当然了,因为你这个csv文件简单。 如果是复杂的,就需要上正则了。
能求一下代码吗?实在不会啊。。[/quote] 大家一般是指方向,不会有具体的说帮忙实现的 如果你实现不了,那你就先尝试下一行行读取,用getline,然后再搜索下用c++做split 如果你连getline都不会,你就得先学学如何读取文件 如果这都不会,那你就别用C++,用python什么的这些你会的或者容易的 如果还是不会,那先学程序再说
ri_aje 2015-03-08
  • 打赏
  • 举报
回复
引用 5 楼 u012890357 的回复:
[quote=引用 4 楼 ri_aje 的回复:] getline 按行读取,然后 boost split string 按 , 分解就行。
有代码参考一下吗?[/quote] 连个测试文件都没有,我也懒得写代码。
viqlegg 2015-03-08
  • 打赏
  • 举报
回复
引用 4 楼 ri_aje 的回复:
getline 按行读取,然后 boost split string 按 , 分解就行。
有代码参考一下吗?
ri_aje 2015-03-08
  • 打赏
  • 举报
回复
getline 按行读取,然后 boost split string 按 , 分解就行。
viqlegg 2015-03-08
  • 打赏
  • 举报
回复
引用 2 楼 taodm 的回复:
C++啊,读这个太简单了吧 先getline,然后用istringstream分拆。当然了,因为你这个csv文件简单。 如果是复杂的,就需要上正则了。
能求一下代码吗?实在不会啊。。
taodm 2015-03-08
  • 打赏
  • 举报
回复
C++啊,读这个太简单了吧 先getline,然后用istringstream分拆。当然了,因为你这个csv文件简单。 如果是复杂的,就需要上正则了。
relaxisland 2015-03-08
  • 打赏
  • 举报
回复
如果没有引号什么等特殊格式,自己写吧 读入一行,然后自己根据逗号分隔, 或者用split函数

65,189

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧