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

C++ storing data from txt into variables using delimiter

本文关键字:存储 txt 变量 数据 分隔符 C++      更新时间:2023-10-16

我正在进行一些调试,我意识到读取数据有问题。我正在尝试使用分隔符将从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 

正如你所看到的,只有第1行的输出被正确存储和显示,第2行以后的输出都是错误的。对此有什么解决方案吗?

我认为有两个问题:第一个是您要查找四次。但当这是第四次时,你应该期待'\n',因为':'ryan:之后才会出现

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"在这种情况下成为的一部分。

更改行

  getline(inFile, lock, ':');

  getline(inFile, lock);

当您使用第一个表单时,它从第一行读取0,从新行读取所有内容,直到第二行的第一个:,并将其放入lock中。