C++ 如何在使用StringStream读取文件时跳过一行?
我正在尝试读取如下所示的CSV文件: 当我读到一行写着“客户”时,我想跳过它读下一行。当我读一行“旅行”时,我也想跳过它,读所有的行,直到下一行“客户”为止。基本上,Cliente是一个类,而inventerio是一个与Cliente相关的不同类,这就是为什么我试图以这种方式阅读它 我尝试在此上下文中使用ss.ignore(),但它似乎没有任何作用:我的行仍然是“Cliente”,代码无法提取值C++ 如何在使用StringStream读取文件时跳过一行?,c++,stringstream,C++,Stringstream,我正在尝试读取如下所示的CSV文件: 当我读到一行写着“客户”时,我想跳过它读下一行。当我读一行“旅行”时,我也想跳过它,读所有的行,直到下一行“客户”为止。基本上,Cliente是一个类,而inventerio是一个与Cliente相关的不同类,这就是为什么我试图以这种方式阅读它 我尝试在此上下文中使用ss.ignore(),但它似乎没有任何作用:我的行仍然是“Cliente”,代码无法提取值 if (fe.good()) { while (!fe.eof()) {
if (fe.good()) {
while (!fe.eof()) {
getline(fe, linea);
stringstream ss;
if (linea != "") {
++total;
if (total > 2) {
if (linea == "Cliente") {
ss << linea;
ss.ignore(20,'\n');
// Starts reading Cliente stuff
getline(ss, dni, ';');
getline(ss, pass, ';');
if(fe.good()){
而(!fe.eof()){
getline(fe,linea);
细流ss;
如果(线性!=“”){
++总数;
如果(总数>2){
如果(直线=“客户”){
请出示a,似乎ss
没有包含任何换行符?处理CSV解析中的所有边缘情况并不容易,我建议使用库,例如,谢谢,我刚刚添加了一个最小的可复制示例和一个调试器截图以防万一。因为这是大学作业,我不能使用外部库ss
只包含“Cliente”
,您需要从文件中读取下一行,然后调用ss.str(line)
,我认为您根本不需要忽略
是的,但是我如何跳过下一行?
int main(int argc, char** argv) {
ifstream fe;
string linea;
int total = 0; // Counts lines
string dni;
//Reads the file
fe.open("ClientesItinerarios.csv");
if (fe.good()) {
while (!fe.eof()) {
getline(fe, linea); //Toma una l�nea del fichero
stringstream ss;
if (linea != "") {
++total;
if (total > 2) {
if (linea == "Cliente") {
ss << linea;
ss.ignore(20,'\n');
// Read only the first value to make the example shorter
getline(ss, dni, ';'); //Stores the first part into dni
}
}
}
}
fe.close();
} else {
cerr << "Cannot read file" << endl;
}
return 0;