C++:读取一行为:'string string;int'
C++: Reading a line as : 'string string;int'
我最近开始编码(学校课程)并且 运行 遇到了一个小问题。我想读取一个 .txt 文件,行就像 "firstname lastname;phonenumber"。
ifstream file("names.txt");
string line, fname, lname;
int num;
while (getline(file, line)) {
istringstream iss(line);
iss >> fname >> lname >> num;
}
所以问题是姓氏是姓氏+“;” + phone 数字,我不知道如何将它们分开。感谢您的帮助:)
编辑:感谢您的快速回复!
您可以使用string.find to find the semicolon, and then use string.substr来拆分字符串。
提取lname
时可以将;
作为分隔符传递给getline
。
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;
}
两种可能的解决方案:
一种相对简单的方法是像现在一样读取 fname
,然后使用 std::getline
和 ';'
作为分隔符(而不是默认的换行符)获得 lname
。然后你可以读入 num
.
像现在一样获得 fname
。然后将 lname;num
放入第二个字符串中。 Find the semi-colon and create two sub-strings, one for lname
and one for num
. Then convert 将包含 num
的字符串转换为整数(在我对 OP 的评论中提到的警告)。
我最近开始编码(学校课程)并且 运行 遇到了一个小问题。我想读取一个 .txt 文件,行就像 "firstname lastname;phonenumber"。
ifstream file("names.txt");
string line, fname, lname;
int num;
while (getline(file, line)) {
istringstream iss(line);
iss >> fname >> lname >> num;
}
所以问题是姓氏是姓氏+“;” + phone 数字,我不知道如何将它们分开。感谢您的帮助:)
编辑:感谢您的快速回复!
您可以使用string.find to find the semicolon, and then use string.substr来拆分字符串。
提取lname
时可以将;
作为分隔符传递给getline
。
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;
}
两种可能的解决方案:
一种相对简单的方法是像现在一样读取
fname
,然后使用std::getline
和';'
作为分隔符(而不是默认的换行符)获得lname
。然后你可以读入num
.像现在一样获得
fname
。然后将lname;num
放入第二个字符串中。 Find the semi-colon and create two sub-strings, one forlname
and one fornum
. Then convert 将包含num
的字符串转换为整数(在我对 OP 的评论中提到的警告)。