Когда я читаю из текстового файла, как мне узнать, достиг ли я новой строки? - PullRequest
0 голосов
/ 12 мая 2018

Имеется текстовый файл, который выглядит следующим образом:

-10 15 -50 -60 70 -30

0 1

1 2

1 3

3 4

4 5

Первая строка "-10 15 -50 -60 70 -30" должна быть помещена в массив.

Остальные линии предполагается использовать в качестве соединительных точек для матрицы смежности.

Как узнать, достиг ли я конца строки?Пока это мой код.

string temp;
    while (getline(txtfile, temp, '\n')) {
        istringstream ss(temp);
        int num;
        while (ss >> num) {
            cout << num << endl;
        }
    }

Я могу разделить все числа, но хочу остановиться после того, как достиг конца строки.

Отредактированный код:

ifstream txtfile("smallgraph.txt");
if (txtfile.is_open()) {
    cout << "Successfully opened file " << "graph.txt" << endl;
    int nodes = 0;
    int budget = 0;

    txtfile >> nodes >> budget;
    cout << nodes << " " << budget << endl;

    vector<int> firstLine;
    string temp;
    if (getline(txtfile, temp, '\n')) {
        istringstream ss(temp);
        int num;
        while (ss >> num)
            firstLine.push_back(num);
    }
    for (int i = 0; i < firstLine.size(); i++) {
        cout << firstLine[i] << " ";
    }
}

1 Ответ

0 голосов
/ 12 мая 2018

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

std::vector<int> from_first_line;
string temp;
if (getline(txtfile, temp, '\n')) {
    istringstream ss(temp);
    int num;
    while (ss >> num)
        from_first_line.push_back(num);

    int first, second;
    while (txtfile >> first >> second) {
        // use for adjacency matrix...
    }
}
else
    std::cerr << "file contained no entries for vector\n";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...