C ++: чтение строки как: 'string string; int' - PullRequest
0 голосов
/ 26 мая 2020

Недавно я начал программировать (школьная программа) и столкнулся с небольшой проблемой. Я хочу прочитать файл .txt, строки похожи на «имя фамилия; номер телефона».

ifstream file("names.txt");

    string line, fname, lname;
    int num;

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

Итак, проблема в том, что фамилия - это фамилия + ";" + номер телефона, и я не знаю, как их разделить. Любая помощь приветствуется :)

Edit: Спасибо за быстрые ответы!

Ответы [ 3 ]

2 голосов
/ 26 мая 2020

Два возможных решения:

  1. Один относительно простой способ - прочитать fname, как сейчас, а затем использовать std::getline с ';' как разделитель (вместо новой строки по умолчанию), чтобы получить lname. Затем вы можете прочитать num.

  2. Получить fname, как вы это делаете сейчас. Затем введите lname;num во вторую строку. Найдите точку с запятой и создайте две подстроки , одну для lname и одну для num. Затем конвертирует строку, содержащую num, в целое число (с оговоркой, упомянутой в моем комментарии к OP).

1 голос
/ 26 мая 2020

Вы можете передать ; как разделитель 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 голосов
/ 26 мая 2020

Вы можете использовать string.find , чтобы найти точку с запятой, а затем использовать string.substr , чтобы разделить строку.

...