我想访问一个目录并获取其中所有文件的名称。然后将这些二进制文件的内容读入一个矩阵(将每个文件的内容读入矩阵的单独一行)。0x009c5be0 {0xcdcdcdcd <Ошибка при чтении символов строки.>}
但在调试器memblock
中,我看到memblock = new char*[(counter+1)];
. 这是代码本身:
void find_bounds()
{
int counter = 0;
//в директории узнаём названия файлов,чтобы по ним пройтись
WIN32_FIND_DATA data;
char** memblock;
HANDLE hFind = FindFirstFile("C:\\Users\\Elvin\\Documents\\all_configs\\*", &data); //
if (hFind != INVALID_HANDLE_VALUE)
{
do {
std::cout << data.cFileName << std::endl;
memblock = new char*[(counter+1)];//хочу на каждый файл досоздавать новую строку
streampos size;
string temp_name = data.cFileName;
//temp_name = temp_name + ".bin";
ifstream file("C:\\Users\\Elvin\\Documents\\all_configs\\"+temp_name, ios::in | ios::binary | ios::ate);
if (file.is_open())
{
size = file.tellg();
memblock[counter] = new char[size];//выделяю столбцы для новой строки, но память не выделяется, пишет "Ошибка при чтении символов строки"
file.seekg(0, ios::beg);
file.read(memblock[counter], size);//запись данных в строку матрицы
file.close();
counter++;
cout << "the entire file content is in memory";
//delete[] memblock;
}
//else cout << "Unable to open file";
} while (FindNextFile(hFind, &data));
FindClose(hFind);
}
}
但不幸的是,memblock
即使是第一次也没有为矩阵分配内存,如何解决这个问题?
像这样的东西,或使用容器
std
: