Я хочу прочитать некоторые файлы jpg
из папки с помощью C++. Я искал в Интернете и не мог найти решение этого. Я не хочу использовать Boost или другие библиотеки, но просто пишу его в функции C++. Например, у меня 40 изображений, названных по "01.jpg, 02.jpg,...40.jpg"
в моей папке, я хочу указать адрес папки и прочитать эти 40 изображений и сохранить их один за другим в векторе. Я пробовал несколько раз, но не смог. Я использую Visual Studio. Может ли кто-нибудь помочь мне в этом? Спасибо.Как читать файлы из папки на C++?
ответ
Я понимаю, основываясь на ваших комментариях, что вы нашли работоспособное решение, используя _sprintf_s
. Microsoft любит продвигать это как более безопасную альтернативу sprintf
, и это верно, если вы пишете свою программу на C. В C++, однако есть гораздо безопаснее способов создания строки, которая не требует от вас управления буфером или знайте его максимальный размер. Если вы хотите быть идиоматичным, я рекомендую вам отказаться от использования _sprintf_s
и использовать инструменты, предоставляемые стандартной библиотекой C++.
Решение, представленное ниже, использует простой цикл for
и std::stringstream
для создания имени файла и загрузки изображения. Я также включил использование std::unique_ptr
для пожизненного управления и семантики собственности. В зависимости от того, как будут использоваться изображения, вам может потребоваться вместо этого использовать std::shared_ptr
.
#include <iostream>
#include <sstream>
#include <iomanip>
#include <vector>
#include <stdexcept>
// Just need something for example
struct Image
{
Image(const std::string& filename) : filename_(filename) {}
const std::string filename_;
};
std::unique_ptr<Image> LoadImage(const std::string& filename)
{
return std::unique_ptr<Image>(new Image(filename));
}
void LoadImages(
const std::string& path,
const std::string& filespec,
std::vector<std::unique_ptr<Image>>& images)
{
for(int i = 1; i <= 40; i++)
{
std::stringstream filename;
// Let's construct a pathname
filename
<< path
<< "\\"
<< filespec
<< std::setfill('0') // Prepends '0' for images 1-9
<< std::setw(2) // We always want 2 digits
<< i
<< ".jpg";
std::unique_ptr<Image> img(LoadImage(filename.str()));
if(img == nullptr) {
throw std::runtime_error("Unable to load image");
}
images.push_back(std::move(img));
}
}
int main()
{
std::vector<std::unique_ptr<Image>> images;
LoadImages("c:\\somedirectory\\anotherdirectory", "icon", images);
// Just dump it
for(auto it = images.begin(); it != images.end(); ++it)
{
std::cout << (*it)->filename_ << std::endl;
}
}
- 1. Swift: как читать файлы из папки
- 2. Как читать/проверять файлы из папки веб-адресов в C#
- 3. читать все файлы из папки или каталога
- 4. Читать все файлы из папки и редактировать
- 5. Я хочу читать текстовые файлы из папки?
- 6. Переместить файлы из папки C
- 7. Как читать все txt-файлы из папки? (включая подпапки)
- 8. Как читать файл из папки общего доступа на C#?
- 9. Как читать файлы из папки ресурсов в Scala?
- 10. Как читать pdf-файлы из папки res в студии android
- 11. Как читать файлы из каждой папки zip, находящейся в каталоге
- 12. Как читать файлы шаблонов Freemarker из папки src/main/resources?
- 13. Как читать файлы из папки apache с помощью PHP
- 14. Как читать файлы и папки в определенном каталоге на android
- 15. Как читать файлы на C++ w/SDL?
- 16. импортировать и читать все файлы из папки Python
- 17. Как выбрать только файлы XML из выбранной папки на C#?
- 18. удалить файлы из папки
- 19. Извлечь файлы из папки
- 20. распечатать файлы из папки
- 21. Прочитайте все файлы из папки C++
- 22. Как читать письма из папки Clutter outlook C#
- 23. Как читать файлы из папки, находящейся за пределами папки WEB-INF?
- 24. Как читать файлы из каталога
- 25. Удалить файлы, скопировать одинаковые именованные файлы из другой папки C#
- 26. Как читать все папки и вложенные папки из Pentaho Kettle Получить файлы с шагом SFTP
- 27. Как читать файл из папки установки приложения с помощью C#?
- 28. Как читать texfile etch .. из папки приложения, где приложение установлено?
- 29. Как читать переменную из другой папки
- 30. Как читать pdf-файл из исходной папки?
попробуйте findfirstfile и findnextfile в sdk или cfilefind в mfc. – Jichao
Как насчет запуска с 'for (int i = 1; i <= 40; i ++) {...}'? Затем прочитайте о ['std :: istringstream'] (http://en.cppreference.com/w/cpp/io/basic_istringstream). –
См. Ответы на этот вопрос о том, как это сделать, используя API Win32: http://stackoverflow.com/questions/15068475/recursive-hard-disk-search-with-findfirstfile-findnextfile-c – Asha