Я знаю, что этот вопрос уже задавался здесь, но я не смог найти ничего, что действительно помогло бы мне понять проблему.
У меня есть текст, заполненный input.txt
, содержимое которого выглядит как-то строки:
4 4
1.0 2.0 3.0 4.0
5.0 6.0 7.0 8.0
9.0 10.0 11.0 12.0
13.0 14.0 15.0 16.0
Где первая строка определяет размеры 2D-массива.
Итак, используя fstream
, я нашел, как извлечь строки из строки файла с помощью линия, но моя проблема с извлечением отдельных данных. Я попытался использовать substr
и обнаружил, что это становится настоящей головной болью, когда вы имеете дело с двойными числами, которые могут иметь переменное количество десятичных разрядов.
Точно так же, поскольку это для вводного курса программирования, векторы запрещены, что я обычно использовал для таких вещей (на самом деле, по этой причине я должен повторить задание).
Поэтому, используя массивы C, как мне извлечь эту информацию из input.txt
?
Мой код для извлечения из первой строки:
int m, n;
if (inputFile.good()) {
std::string line;
std::getline(inputFile, line);
std::string sizeX = line.substr(0, 1);
std::string sizeY = line.substr(2, 1);
m = stoi(sizeX);
n = stoi(sizeY);
}
Но это также не будет работать, если размеры массива будут больше 9.
Так как я могу улучшить оба моих первых метода, а затем перетащить оставшиеся данные в массив C для манипуляции в памяти.
Кроме того, методы на основе токенов, которые я видел, такие как:
int a, b;
while (infile >> a >> b)
{
// process pair (a,b)
}
, не объясняют, как вы могли бы сделать это для переменного числа элементов в строке.
Заранее спасибо