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;
}

两种可能的解决方案:

  1. 一种相对简单的方法是像现在一样读取 fname,然后使用 std::getline';' 作为分隔符(而不是默认的换行符)获得 lname。然后你可以读入 num.

  2. 像现在一样获得 fname。然后将 lname;num 放入第二个字符串中。 Find the semi-colon and create two sub-strings, one for lname and one for num. Then convert 将包含 num 的字符串转换为整数(在我对 OP 的评论中提到的警告)。