Вам нужно зарезервировать пространство в векторе, прежде чем присваивать ему значения через data[i][c] = currentchar;
. Но, вероятно, трудно зарезервировать место, прежде чем читать содержимое.
Более простым способом было бы использовать возможности динамического роста векторов (т. Е. push_back
) и использовать std::string
в качестве содержимого строки, поскольку вы можете легко читать полными строками. Вы по-прежнему можете получить доступ / изменить содержимое, а затем через data[i][c] = currentchar;
. Смотрите следующий код, иллюстрирующий это:
#include <sstream>
#include <iostream>
#include <vector>
int main() {
const char* fileContent = R"foo(.........
.........
.........
.........
....X....
.........
.........
.........
.........)foo";
std::vector<std::string> lines;
stringstream ss(fileContent);
string line;
while (getline(ss,line)) {
lines.push_back(line);
}
lines[2][5] = 'Y';
for (auto line : lines) {
for (auto c : line) {
cout << c << " ";
}
cout << endl;
}
}
Выход:
. . . . . . . . .
. . . . . . . . .
. . . . . Y . . .
. . . . . . . . .
. . . . X . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .
. . . . . . . . .