-1

.outプログラムが読み取る必要があるファイル名を入力し、代わりに拡張子付きの名前を出力するようにユーザーに要求するにはどうすればよいですか?

例:

char fileName[256];
cout << "What is the file name that should be processed?";
cin >> fileName;

inFile.open(fileName);
outFile.open(fileName);

しかし、ファイルを元のドキュメント タイプ (IE:.txt) ではなく filename.out として保存する必要があります。

私はこれを試しました:

char fileName[256];
cout << "What is the file name that should be processed?";
cin >> fileName;

inFile.open(fileName.txt);
outFile.open(fileName.out);

しかし、私はこれらのエラーが発生します:

c:\users\matt\documents\visual studio 2008\projects\dspi\dspi\dspi.cpp(41): エラー C2228: '.txt' の左側には class/struct/union が必要です 1> タイプは 'char [256 ]'

c:\users\matt\documents\visual studio 2008\projects\dspi\dspi\dspi.cpp(42): エラー C2228: '.out' の左側には class/struct/union が必要です 1> タイプは 'char [256 ]'

4

3 に答える 3

1

fileName拡張子を変更するには:

string fileName;
cin >> fileName;
string newFileName = fileName.substr(0, fileName.find_last_of('.')) + ".out";
于 2010-09-11T22:30:12.517 に答える
1

C++ の使用を意味する iostream を使用しています。つまり、おそらく std::string を使用する必要があることを意味します。これには、文字列連結用の演算子がオーバーロードされており、自動メモリ管理と追加されたセキュリティの優れた副作用があります。

#include <string>
// ...
// ...
std::string input_filename;
std::cout << "What is the file name that should be processed?\n";
std::cin >> input_filename;
// ...
infile.open(input_filename + ".txt");
于 2010-09-11T22:25:14.183 に答える
0

書き込みは、それがオブジェクトであり、その data member にアクセスしたいことをfilename.txt意味します。(同様の議論が にも当てはまります)。代わりに、fileName.txtfileName.out

inFile.open(fileName + ".txt");
outFile.open(fileName + ".out");
于 2010-09-11T22:27:01.370 に答える