C++: 读一行是: 'string string;int'

问题描述 投票:0回答:3

我最近开始编写代码(学校课程),遇到了一个小问题,我想读取一个.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+"; "+电话号码,我不知道怎么把它们分开。希望得到任何帮助:)

编辑:谢谢你的快速回复!

c++ ifstream sstream
3个回答
2
投票

有两种可能的解决方案。

  1. 一个比较简单的方法是读取 fname 就像你现在这样,然后用 std::getline';' 作为分隔符(而不是默认的换行),以得到 lname. 然后你可以读成 num.

  2. 获取 fname 就像你现在这样。然后得到 lname;num 变成第二个字符串。找到 分号,并建立两个 子串,一个为 lname 和一个用于 num. 那么 转化 含有 num 变为一个整数(我在上位机评论中提到的注意事项)。


1
投票

你可以将 ; 作为分离器,以 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;
}

0
投票

您可以使用 string.find 找到分号,然后用 string.substr 来分割字符串。

© www.soinside.com 2019 - 2024. All rights reserved.