Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/130.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何在使用StringStream读取文件时跳过一行?_C++_Stringstream - Fatal编程技术网

C++ 如何在使用StringStream读取文件时跳过一行?

C++ 如何在使用StringStream读取文件时跳过一行?,c++,stringstream,C++,Stringstream,我正在尝试读取如下所示的CSV文件: 当我读到一行写着“客户”时,我想跳过它读下一行。当我读一行“旅行”时,我也想跳过它,读所有的行,直到下一行“客户”为止。基本上,Cliente是一个类,而inventerio是一个与Cliente相关的不同类,这就是为什么我试图以这种方式阅读它 我尝试在此上下文中使用ss.ignore(),但它似乎没有任何作用:我的行仍然是“Cliente”,代码无法提取值 if (fe.good()) { while (!fe.eof()) {

我正在尝试读取如下所示的CSV文件:

当我读到一行写着“客户”时,我想跳过它读下一行。当我读一行“旅行”时,我也想跳过它,读所有的行,直到下一行“客户”为止。基本上,Cliente是一个类,而inventerio是一个与Cliente相关的不同类,这就是为什么我试图以这种方式阅读它

我尝试在此上下文中使用ss.ignore(),但它似乎没有任何作用:我的行仍然是“Cliente”,代码无法提取值

    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;