Объединить все файлы * .txt в один текстовый файл, имя которого задает пользователь с помощью C ++ - PullRequest
0 голосов
/ 26 мая 2020

Я пытаюсь создать небольшую и простую оболочку с использованием C ++, и я хочу использовать что-то вроде этого.

if (arr[0] == "type")

    {
         system("type *.txt >> output.txt");
    }

Если пользователь вводит тип, программа объединит все текстовые файлы в текущем рабочем каталоге в один. Когда я запускаю его с приведенным выше кодом, он объединяет файлы, но дважды добавляет содержимое этих текстовых файлов в output.txt. Также могу ли я указать "output.txt" со значением массива, которое я сохранил?

Пользователь вводит команду следующим образом:

  getline(cin, command);


        string line = command;             
        string arr[5];
        int i = 0;
        stringstream ssin(line);
        while (ssin.good() && i < 5) {
            ssin >> arr[i];
            ++i;
        }

, поэтому я хочу использовать arr [3] для замены «output.txt»

1 Ответ

1 голос
/ 26 мая 2020

Вероятно, что происходит, так это то, что output.txt также сопоставляется с * .txt, поэтому в какой-то момент собирается снова записать все содержимое в этот файл. Вы можете легко проверить это, изменив расширение output.txt на, например, output.out.

Для второго вопроса вы можете сделать что-то вроде этого:

ofstream os;
string out_file_name;
os << "type *.txt >> " << out_file_name;
system(os.str().c_str());

Что-то вроде это может сработать

...