我最近开始编写代码(学校课程),遇到了一个小问题,我想读取一个.txt文件,行文是 "firstname lastname;phonenumber"。我想读取一个.txt文件,行是这样的 "firstname lastname;phonenumber".所以问题是lastname是lastname+"; "+电话号码,我不知道如何将它们分开。
ifstream file("names.txt");
string line, fname, lname;
int num;
while (getline(file, line)) {
istringstream iss(line);
iss >> fname >> lname >> num;
}
所以问题是lastname是lastname+"; "+电话号码,我不知道怎么把它们分开。希望得到任何帮助:)
编辑:谢谢你的快速回复!
有两种可能的解决方案。
一个比较简单的方法是读取 fname
就像你现在这样,然后用 std::getline
与 ';'
作为分隔符(而不是默认的换行),以得到 lname
. 然后你可以读成 num
.
获取 fname
就像你现在这样。然后得到 lname;num
变成第二个字符串。找到 分号,并建立两个 子串,一个为 lname
和一个用于 num
. 那么 转化 含有 num
变为一个整数(我在上位机评论中提到的注意事项)。
你可以将 ;
作为分离器,以 getline
在提取 lname
.
std::ifstream file("names.txt");
for (std::string line; getline(file, line);) {
std::istringstream iss(line);
std::string fname, lname;
int num;
iss >> fname;
getline(iss, lname, ';');
iss >> num;
}
您可以使用 string.find 找到分号,然后用 string.substr 来分割字符串。