Не работает ввод параметра из файла в командной строке linux

Есть задача: нужно написать программу в vscode,которая выводит на стандартный поток текст "Hello, Name", где Name – введённое имя при запуске из командной строки или терминала. То есть запрос в командной строке выглядит примерно так:

./"имя программы" Ivan
Hello,Iva
./"имя программы" >out.txt <in.txt - // ничего в out не падает ( в in.txt конечно лежит имя )

КОД VS CODE:

#include <iostream>
#include <fstream>
int main(int argc, char* argv[])
{
    setlocale(LC_ALL, "rus");
    using namespace std;
    int num;
    if (argc > 1) {
        if (argc == 3) {
            cout << "Выберите номер используемого параметра\n";
            cin >> num;
            if (num == 1) {
                cout << "Hello," << argv[1];
            }
            else
                cout << "Hello," << argv[2];
        }
        else
            cout << "Hello," << argv[1];
    }
    else {
        ofstream file;
        file.open("error.txt");
        file << "Ошибка";
        file.close();
    }
        
 }

Уже не знаю что делать, буду очень благодарен за помощь


Ответы (1 шт):

Автор решения: Harry
< in.txt

это не передача параметра командной строки, а подмена содержимым файла стандартного ввода.

Так что при

./"имя программы" >out.txt <in.txt

argc==1 и вы должны получить файл error.txt...

Действуйте так - если argc==1, т.е. аргументов командной строки нет (а перенаправление ввода-вывода таковыми не считается) - читайте имя из cin. Если я верно понял, что вы хотите. Если нет - задайте вопрос понятнее..

→ Ссылка