Мне нужно прочитать значения из текстового файла. В каждой строке есть несколько значений, а в текстовом файле более пары тысяч строк.
Я хочу сохранить каждое отдельное значение в векторе, но я не знаю, как заставить программу считывать каждое значение в одной строке.
Я пытался использовать getline, но он берет всю строку и сохраняет ее.
Благодарен за любую помощь, которую я могу получить!
Вы можете прочитать все числа и сохранить их все в одном векторе с помощью
int number;
std::vector<int> vec;
while (file >> number)
vec.push_back(number);
например.:
#include <fstream>
#include <iostream>
#include <sstream>
#include <vector>
int main() {
//std::ifstream file("file.txt");
std::stringstream file(R"(1 2 3
4 5 6 7 8 9
10 11
12
13
14 15 16)");
int number;
std::vector<int> vec;
while (file >> number)
vec.push_back(number);
std::cout << vec.size();
}
vec
содержит все 16 чисел.
vec.push_back(число), берет число из входного файла и помещает его в вектор "vec"?
@Gruffis vec.push_back(number)
помещает number
в вектор. file >> number
считывает число из файлового потока (или строкового потока в моем примере).
Хорошо, я понял. Большое спасибо!
я просто столкнулся с некоторыми проблемами. Вектор возврата работает отлично, проблема в том, что когда я проверяю, насколько велик вектор с помощью sizeof() , он говорит 12, он должен быть около 6000
@Gruffis sizeof
дает вам размер объекта во время компиляции. Этот размер не изменится во время выполнения. Вектор использует динамически выделяемую память. Вы получаете количество элементов с помощью vec.size()
, как вы можете видеть в моем примере.
Я считаю, что решение может включать getline и, возможно, istringstream. Не могли бы вы добавить код, который вы пробовали. На StackOverflow, если вы покажете свою попытку, у вас будет больше шансов получить помощь в ее исправлении.