Не работает ввод параметра из файла в командной строке 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. Если я верно понял, что вы хотите. Если нет - задайте вопрос понятнее..