Как прочитать два слова, а затем строку из потока в C ++? - PullRequest
0 голосов
/ 20 января 2020

Я столкнулся с небольшой проблемой при кодировании на C ++. У меня есть вход (файл, который будет прочитан fstream):

1 2
three four five six

Что я хочу сделать с этим вводом: взять первую строку и разделить ее на две string переменные: одна с 1 и одна с 2. После этого для следующей строки я хочу использовать некоторую форму getline(), возможно, чтобы получить «три четыре пять шесть» как одну string. В настоящее время я пробовал это: у меня есть код, который объявляет три строковые переменные:

#include<string>
// Main function...
string str1, str2, str3;
fstream inf;
inf.open('somefile.txt');
inf >> str1 >> str2 >> str3;
inf.close();

Этот код правильно принимает "1" и "2", но он принимает только первый символ следующей строки , Что я здесь не так делаю?

Буду признателен за любую помощь. Спасибо!

1 Ответ

0 голосов
/ 20 января 2020

Используйте std::getline() после игнорирования \n, используя ignore(), чтобы получить всю строку в виде строки следующим образом

#include<string>
#include<fstream>
#include<iostream>

int main(){
    std::string str1, str2, str3;
    std::fstream inf;
    inf.open("somefile.txt");
    inf >> str1 >> str2;
    inf.ignore();
    std::getline(inf, str3);
    inf.close();

    //Displying them
    std::cout<<str1<<" "<<str2<<" "<<str3;
    }
...