c++ list读取csv文件,并将每列数据保存到结构体中

c++ list读取csv文件,并将每列数据保存到结构体中,第1张

[cpp] view plain copy

#include <iostream>

#include <fstream>

#include <sstream>

#include <string>

#include <vector>

using namespace std

//删除字符串中空格,制表符tab等无效字符

string Trim(string&str)

{

//str.find_first_not_of(" \t\r\n"),在字符串str中从索引0开始,返回首次不匹配"\t\r\n"的位置

str.erase(0,str.find_first_not_of(" \t\r\n"))

str.erase(str.find_last_not_of(" \t\r\n") + 1)

return str

}

int main()

{

ifstream fin("test1.csv")//打开文件流 *** 作

string line

while (getline(fin, line)) //整行读取,换行符“\n”区分,遇到文件尾标志eof终止读取

{

cout <<"原始字符串:"<<line <<endl//整行输出

istringstream sin(line)//将整行字符串line读入到字符串流istringstream中

vector<string>fields//声明一个字符串向量

string field

while (getline(sin, field, ',')) //将字符串流sin中的字符读入到field字符串中,以逗号为分隔符

{

fields.push_back(field)//将刚刚读取的字符串添加到向量fields中

}

string name = Trim(fields[0])//清除掉向量fields中第一个元素的无效字符,并赋值给变量name

string age = Trim(fields[1])//清除掉向量fields中第二个元素的无效字符,并赋值给变量age

string birthday = Trim(fields[2])//清除掉向量fields中第三个元素的无效字符,并赋值给变量birthday

cout <<"处理之后的字符串:"<<name <<"\t" <<age <<"\t" <<birthday <<endl

}

return EXIT_SUCCESS

用for循环啊!

int size = list.size()

for(int i = 0i <sizei++) {

//假设list中你存放的是User对象,当然其他的也可以的!

User user = list.get(i)

System.out.println(user.getName())

System.out.println(user.getTelephonNum())

...

}

你写到G:/java/L/src/sal.dat,这是在你的源码文件夹下,而你读取的时候读的是SalaryDAOImpl.class.getClassLoader().getResourceAsStream("sal.dat")这是找你的类路径下的sal.dat,源码文件夹和类路径是两个概念,在eclipse里面工程的一个类路径为bin目录,默认情况下会把src下的文件全输出到(对于java文件先编译成class)bin目录下.但是你的sal.dat是在执行过程中才会去写的.你看看你的bin目录下倒底有没有这个问题,以及这个文件中有没有内容就知道了


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12101849.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存