Как прочитать данные из файла и сохранить имена из файла в одном векторе, а оценки из файла в другом? - PullRequest
0 голосов
/ 30 апреля 2020

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

Текстовый файл, на который ссылаются, имеет следующий формат:

Джеймс 80

Фрэнк 67

Дженни 95

Я изо всех сил пытаюсь понять, как читать и сохранять две переменные из одного файла в два вектора, так что если то, что у меня есть, пока не имеет смысла Я не буду полностью шокирован. В my >> after infile есть сообщение об ошибке, в котором говорится, что нет операторов, соответствующих этим операндам, и я понятия не имею, что с этим делать. Кроме того, я просто не знаю, где go отсюда или как исправить мой текущий код. Любая помощь приветствуется. Пожалуйста, будьте терпеливы со мной, я супер новичок в этом.

//Name
//This program will read and sort names and grades from a file using functions and vectors
#include <iostream>
#include <fstream>
#include <string>
#include <iomanip>
#include <vector>
using namespace std;

int main()
{
    ifstream infile;
    infile.open("student.txt");

    if (infile.fail() == false)
    {
        vector<string> name;
        vector<int> score;

        while (infile >> name)
        {
            infile >> score;
        }
    }
    else
    {
        cout << "Could not open the file." << endl;
    }
return 0;
}

1 Ответ

1 голос
/ 30 апреля 2020

Так что я думаю, вы не понимаете, что вам нужно разбить проблему на более мелкие этапы. Вы (предположительно) знаете, как читать одно значение из вашего файла, и (предположительно) знаете, как добавить значение в вектор. И вы, кажется, понимаете, что вам нужен какой-то l oop. То, что вам нужно сделать, это соединить эти приемы для достижения желаемого общего эффекта. Часто, когда вы делаете это, вам нужно ввести переменные для хранения промежуточных значений в ваших вычислениях. И здесь дело обстоит так: мы будем читать значения из файла в переменные, а затем добавим значения этих переменных в векторы.

    vector<string> all_names;
    vector<int> all_scores;
    string name;
    int score;
    while (infile >> name >> score) // read one name and one score
    {
        all_names.push_back(name); // add that name to vector
        all_scores.push_back(score); // add that score to vector
    }

Совет, который вы получили в комментариях: если проблема слишком сложная, вам следует сначала поработать над более простой версией, это тоже очень хороший совет. Многие начинающие, когда им дают большую или сложную задачу, пытаются решить все сразу. Профессионалы не работают таким образом, как и новички.

...