特别简单的c++读取txt数据

网上将c++读取txt的资料很多,但是都是只读取一行的,如何高效的读取txt多行数据呢?
c++有类fstream,ifstrem, ofstrem专门用来读取文件。而数据获取有两种方式,一种是 >>流的方式,它会把字符依次放入我们定义的变量里,无需转换什么的,但这种方式的结束必须是遇到结束符才能结束(比如ctrl+D),第二种方式是getline,一行一行读出来的就是字符串,你得把字符串再分开存为自己想要的变量,比较麻烦。

我需要从txt里面读两个时间戳,三个double类型数据,在txt里面每一行5个数据,我选择使用第一种方式读(第一种方式读 数据中间必须是空格!!!),怎么结束呢,用eof()来判断结束。
代码如下:

void read_data()
{
    //acc data
    std::ifstream accfile;
    accfile.open("Accel.txt");
    if(!accfile.is_open())
    {
        cerr << "open acc file failed" << endl;
        return;
    }
    while(accfile.eof())
    {
		double true_time = 0,get_time = 0,acc_x = 0,acc_y = 0,acc_z = 0;
        accfile >> true_time >> get_time >> acc_x >> acc_y >> acc_z;
    }
    if(accfile.is_open())
    {
        accfile.close();
    }

}

我的txt是这样的

1627719389.589253 1627719389.596323 0.022751 0.930954 -0.355698
1627719389.599375 1627719389.606408 0.017471 0.932480 -0.359253
1627719389.609425 1627719389.616492 0.014145 0.933105 -0.356033
1627719389.619501 1627719389.626575 0.012802 0.936111 -0.352310
1627719389.629684 1627719389.636660 0.012711 0.938141 -0.350250
1627719389.639688 1627719389.646744 0.011856 0.938004 -0.351715
1627719389.649887 1627719389.656827 0.011551 0.939407 -0.353806
1627719389.661057 1627719389.666912 0.013977 0.940628 -0.358261
1627719389.669974 1627719389.676996 0.015991 0.936127 -0.360092
1627719389.680212 1627719389.687079 0.017456 0.934402 -0.361694
1627719389.690019 1627719389.697164 0.017319 0.935791 -0.362183
1627719389.700118 1627719389.707247 0.018845 0.932602 -0.360611
1627719389.710269 1627719389.717332 0.018417 0.932083 -0.362549
1627719389.720286 1627719389.727416 0.017075 0.931503 -0.364990
1627719389.731444 1627719389.737499 0.015442 0.928009 -0.366562
1627719389.740499 1627719389.747584 0.012894 0.927307 -0.367966
1627719389.750484 1627719389.757668 0.010590 0.927902 -0.366959
1627719389.760624 1627719389.767751 0.010910 0.927261 -0.364548
1627719389.770919 1627719389.777836 0.014435 0.930344 -0.362595
1627719389.781956 1627719389.787920 0.013214 0.932724 -0.361542
1627719389.790897 1627719389.798002 0.011276 0.931534 -0.364960
1627719389.800996 1627719389.808087 0.009689 0.933121 -0.364761
1627719389.811102 1627719389.818171 0.009262 0.929657 -0.366669
1627719389.821225 1627719389.828254 0.011719 0.927872 -0.367355
1627719389.832364 1627719389.838339 0.015610 0.929977 -0.363251
1627719389.841352 1627719389.848423 0.018814 0.931274 -0.361435
1627719389.851471 1627719389.858506 0.021088 0.928818 -0.356705
1627719389.861493 1627719389.868591 0.022919 0.928314 -0.354202
1627719389.871583 1627719389.878675 0.020035 0.928955 -0.352859
1627719389.882282 1627719389.888758 0.015015 0.928329 -0.353104
1627719389.891752 1627719389.898843 0.012039 0.930679 -0.351593
1627719389.901842 1627719389.908926 0.012894 0.932541 -0.350357
1627719389.912131 1627719389.919011 0.014862 0.932236 -0.351685
1627719389.922013 1627719389.929095 0.013626 0.934021 -0.353012
1627719389.932394 1627719389.939178 0.012436 0.931778 -0.355042
1627719389.942180 1627719389.949263 0.014832 0.931290 -0.356155
1627719389.952280 1627719389.959347 0.015396 0.930542 -0.354141
1627719389.962728 1627719389.969430 0.017395 0.932404 -0.350586
1627719389.972454 1627719389.979515 0.016388 0.933044 -0.347321
1627719389.982641 1627719389.989599 0.012833 0.932388 -0.348190
1627719389.992592 1627719389.999682 0.010574 0.929962 -0.353302
1627719390.002683 1627719390.009766 0.012344 0.925064 -0.352829

一行5个数据,每个数据空格隔开。我之前的txt数据是用逗号隔开的,只有第一个数据读的是正确的,后面的都是0,所以一定要用空格隔开。

如果txt里面有不需要的行,比如用#写了注释,

#time ax ay az
1627719389.589253 1627719389.596323 0.022751 0.930954 -0.355698
1627719389.599375 1627719389.606408 0.017471 0.932480 -0.359253
1627719389.609425 1627719389.616492 0.014145 0.933105 -0.356033
1627719389.619501 1627719389.626575 0.012802 0.936111 -0.352310
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值