Я пишу программу на 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;}