Я задавал этот вопрос раньше, но с меньшей информацией, чем сейчас.
По сути, у меня есть блок данных типа char. Этот блок содержит имена файлов, которые мне нужно отформатировать и поместить в вектор. Сначала я думал, что формирование этого блока символов имеет три пробела между каждым именем файла. Теперь я понимаю, что они являются символами '/ 0' с нулевым символом в конце. Таким образом, решение, которое было предоставлено, было фантастическим для примера, который я привел, когда подумал, что есть пробелы, а не нулевые символы.
Вот как выглядит структура. Кроме того, я должен указать на У меня действительно есть размер блока символьных данных.
filename1.bmp/0/0/0brick.bmp/0/0/0toothpaste.gif/0/0/0
Лучшее решение было так:
// The stringstream will do the dirty work and deal with the spaces.
std::istringstream iss(s);
// Your filenames will be put into this vector.
std::vector<std::string> v;
// Copy every filename to a vector.
std::copy(std::istream_iterator<std::string>(iss),
std::istream_iterator<std::string>(),
std::back_inserter(v));
// They are now in the vector, print them or do whatever you want with them!
for(int i = 0; i < v.size(); ++i)
std::cout << v[i] << "\n";
Это прекрасно работает для моего первоначального вопроса, но не потому, что они являются нулевыми символами вместо пробелов Есть ли способ заставить приведенный выше пример работать. Я попытался заменить нулевые символы в массиве пробелами, но это не сработало.
Есть идеи, как лучше отформатировать этот символьный блок в вектор строк?
Спасибо.