0

我最近开始编码(学校课程)并遇到了一个小问题。我想读取一个 .txt 文件,这些行就像“名字姓氏;电话号码”。

ifstream file("names.txt");

    string line, fname, lname;
    int num;

    while (getline(file, line)) {
        istringstream iss(line);
        iss >> fname >> lname >> num;
    }

所以问题是姓氏是姓氏+“;” + 电话号码,我不知道如何将它们分开。任何帮助表示赞赏:)

编辑:感谢您的快速回复!

4

3 回答 3

2

两种可能的解决方案:

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

  2. fname现在这样。然后lname;num进入第二个字符串。找到分号并创建两个子字符串,一个 for lname,一个 for num。然后包含的字符串num转换为整数(在我对 OP 的评论中提到了警告)。

于 2020-05-26T10:55:43.283 回答
1

提取时可以;作为分隔符传递给.getlinelname

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;
}
于 2020-05-26T10:54:57.603 回答
0

您可以使用string.find查找分号,然后使用string.substr拆分字符串。

于 2020-05-26T10:54:42.083 回答