Как открыть текстовый файл в C ++, используя аргумент командной строки, не используя расширение файла? - PullRequest
1 голос
/ 21 октября 2019

Я пишу программу на C ++, где передаю имя текстового файла в качестве аргумента командной строки, а затем манипулирую этим текстовым файлом. Но у меня возникают проблемы со ссылкой на текстовый файл. Дело в том, что я хочу иметь возможность ссылаться на переданный файл только по его имени без расширения. Например, я хочу иметь возможность ссылаться на код следующим образом:

./ProgramName exampleTextFileName

, а не так:

./ProgramName exampleTextFileName.txt

Я могу получить доступ к файлу, просто открыв файлимя хранится в argv [1] и использует .txt в командной строке. Но как мне сделать это, не передавая в конце .txt? Я попытался сделать это, взяв argv [1] и вручную добавив кавычки и .txt, но я получаю сообщение об ошибке при попытке открыть файл с добавленным именем. Я предполагаю, что тип переменной для имен файлов на самом деле не является строкой? Как бы я сделал это правильно?

Вот код, который я пытался использовать:

int main(int argc, char *argv[]) {
string line;
string fileName;
fileName = argv[1];
fileName = "\"" + fileName + ".txt\"";
cout << fileName;
ifstream myfile (fileName);
if (myfile.is_open()) {
    while ( getline (myfile,line) ) {
        cout << line << '\n';
    }
myfile.close();
}
else cout << "Unable to open file"; 


return 0;}

1 Ответ

0 голосов
/ 21 октября 2019

Вам не нужны двойные кавычки для fileName, этого должно быть достаточно:

...
string fileName = argv[1];
fileName += ".txt";
...

Я бы также добавил проверку на argc, чтобы убедиться, что аргумент действительно задан.

...