C ++使用分隔符将数据从txt存储到变量中

时间:2015-02-07 08:38:11

标签: c++ netbeans

我正在做一些调试,我意识到读取数据是错误的。我试图使用分隔符将从txt读取的数据存储到不同的变量中。

data.txt中

homer:mtrjw:member:0
bryan:gw~fs:member:0
adam:fifr:member:0
admin12:firns67:admin:0

代码:

string user, pwd, role;
string lock;
ifstream inFile;
inFile.open("data.txt");

while(inFile.good()){

    getline(inFile, user, ':');
    getline(inFile, pwd, ':');
    getline(inFile, role, ':');
    getline(inFile, lock, ':');

    cout << user << " " << pwd << " " << role << " " << lock << " " << endl;
    /*
    some if conditions...
    }*/
}

输出:

homer mtrjw member 0
bryan 
gw~fs member 0
adam fifr 
member 0
admin12 firns67 admin 
0
taken yfpjs member 0
brian 
gwnfs member 1
miller rnqqjw 
member 0
 1
miller rnqqjw 

正如您所看到的那样,输出只有第一行正确存储并显示,第二行以后都是错误的。任何解决方案吗?

2 个答案:

答案 0 :(得分:1)

我认为有两个问题: 第一个是你正在寻找四次。但是,这是第四次你应该期待'\ n',因为只有在 bryan 之后才能满足':'

string user, pwd, role;
string lock;
ifstream inFile;
inFile.open("data.txt");

while(inFile.good()){
getline(inFile, user, ':');
getline(inFile, pwd, ':');
getline(inFile, role, ':');
getline(inFile, lock, '\n');

cout << user << " " << pwd << " " << role << " " << lock << " " << endl;
/*
some if conditions...
}*/

}

第二个是你的'\ n'在这种情况下成为 lock 的一部分。

答案 1 :(得分:0)

更改行

  getline(inFile, lock, ':');

  getline(inFile, lock);

当您使用第一个表单时,它会从第一行,换行符以及第二行中第一个0的所有内容读取:并将其放入lock