В этом ТАКом вопросе есть блестящий ответ благодаря @HowardHinnant, который очень эффективно извлекает числа из текстового файла в вектор.Вот код для краткости:
#include <fstream>
#include <iostream>
#include <vector>
#include <string>
#include <sstream>
#include <iterator>
// g++ -std=c++11 test.cpp -o t
int main()
{
std::ifstream theStream("data.txt");
if( ! theStream )
std::cerr << "data.txt\n";
while (true)
{
std::string line;
std::getline(theStream, line);
if (line.empty())
break;
std::istringstream myStream( line );
std::istream_iterator<int> begin(myStream), eof;
std::vector<int> numbers(begin, eof);
// process line however you need
std::copy(numbers.begin(), numbers.end(),
std::ostream_iterator<int>(std::cout, " "));
std::cout << '\n';
}
}
Примером данных будет
800 170 84 439
129 902 103 492 394 140 496 893
229 645
164 389 74 208 726 315
291 421 230 789 246 791 762
416 241 538 810 605
714 555 54 863
288 465 563 831
0 339 740 427 718
449 675 545 842 779 607
274 958
. Я изучал этот код уже два дня и не могу понять, какизвлечь числа из каждой строки.Итак, как я могу получить доступ, скажем, к 3-му номеру во второй строке (103) или, в более общем смысле, к n-му номеру в m-й строке?
Любое объяснение того, как работает это решение, тоже очень поможет!