C ++使用定界符将txt中的数据存储到变量中
C++ storing data from txt into variables using delimiter
我正在调试,我意识到读取数据有问题。我正在尝试使用定界符将从 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
正如你所看到的,只有第一行的输出被正确存储和显示,第二行以后都是错误的。有什么解决办法吗?
我认为有两个问题:
第一个是您要查找 : 四次。但是当它是第四次时,你应该期待 '\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 的一部分。
换行
getline(inFile, lock, ':');
到
getline(inFile, lock);
当您使用第一种形式时,它会从第一行读取 0
、换行符以及第二行中的第一个 :
之前的所有内容并将其放入 lock
.
我正在调试,我意识到读取数据有问题。我正在尝试使用定界符将从 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
正如你所看到的,只有第一行的输出被正确存储和显示,第二行以后都是错误的。有什么解决办法吗?
我认为有两个问题: 第一个是您要查找 : 四次。但是当它是第四次时,你应该期待 '\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 的一部分。
换行
getline(inFile, lock, ':');
到
getline(inFile, lock);
当您使用第一种形式时,它会从第一行读取 0
、换行符以及第二行中的第一个 :
之前的所有内容并将其放入 lock
.