читать целое число из файла - PullRequest
0 голосов
/ 24 марта 2020

Я делаю программу, которая читает целые числа из текстового файла и показывает их на экране. Я хотел использовать stringstream, но я не уверен, как это работает.

Текстовый файл содержит также слова, например:

She bought a tshirt for 25 shoes for 50 and a book for 5

На экране должны быть видны только 25, 50 и 5. Теперь вывод, который я вижу, просто 0. Мой код:

#include <iostream>
#include "std_lib_facilities.h"

using namespace std;

string file = "file.txt";

void f() {
    vector<int> num;
    ifstream ist {file};
    if (!ist) error("can't open input file", file);
    string textline;
    while (getline(ist, textline)) {
        istringstream text(textline);
        int integer;
        text >> integer;
        num.push_back(integer);
    }
    for (int i = 0; i < num.size(); i++) {
        cout << num[i] << endl;
    }
}

int main()
{
    f();
    return 0;
}

Возможно ли сделать это по-другому? Может ли кто-нибудь объяснить мне это?

1 Ответ

2 голосов
/ 24 марта 2020

Вы должны читать слово за словом, а не строку за строкой, и вам нужно проверить, что вы успешно прочитали число, прежде чем сохранить его.

Прямо сейчас вы пробуете только первое слово в строке и не удалось.

Попробуйте это:

string word;
while (ist >> word) {
    istringstream text(word);
    int integer;
    if (text >> integer)
    {
        num.push_back(integer);
    }
}
...