Arhn - архитектура программирования

Открыть последовательные файлы C++

У меня есть папка, полная файлов в этом формате FileName000.extension FileName001.extension и т. д. Мне нужно открыть их все и сделать что-то на C++. Что я пробовал, так это:

for(int i=0; i<number_of_files; i++){
        char filename[64];
if(i<10){
        sprintf(filename, "/Path/To/File/FileName00%i.extension", i);
}
    if(i<100){
        sprintf(filename, "/Path/To/File/FileName0%i.extension", i);
}
else{
        sprintf(filename, "/Path/To/File/FileName%i.extension", i);
}
        ifstream infile ( filename );

//DO STUFF TO FILES HERE INSIDE THE FOR LOOP
}

Кажется, это не работает из-за ifs по какой-то причине. Любая помощь будет оценена по достоинству. Неважно, символ это или строка, просто это работает. Я использую Xcode в качестве IDE, но программа должна работать и в Windows.

05.07.2013


Ответы:


1

Вы можете использовать sprintf(... "...%03d...", ...), чтобы получить последовательное трехзначное число.

05.07.2013

2

Если вы прочитаете хороший справочник, вы увидите, что вам не нужно выборочные части вообще:

snprintf(filename, sizeof(filename), "/Path/To/File/FileName%03d.extension", i);

3 в коде формата указывает snprintf использовать три символа в качестве ширины поля, начальный 0 указывает использовать начальные нули для значений меньше 99.


Что касается проблем, которые у вас возникли с вашими if утверждениями, вам не хватает else:

if (i < 10) { ... }
else if (i < 100) { ... }
else { ... }

Если вам нужно решение на C++, вы можете использовать std::ostringstream:

std::ostringstream os;
os << "/Path/To/File/FileName" << std::setfill('0') << std::setw(3) << i << ".extension";

ifstream file(os.str());
05.07.2013
  • Неудивительно, что все программы, поддерживающие последовательный ввод, используют один и тот же числовой формат, я думал, что это своего рода мем, и все они написали свои собственные реализации этого... Кто-нибудь знает хороший справочник по функциям и функциям стандартной библиотеки C? 29.05.2015
  • Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..