2

私がやりたいのは、「test.txt」というファイルを読み取り、ファイルの内容を const char * 型にすることです。どうすればこれを行うことができますか?

4

3 に答える 3

6

あなたが本当にそれをしたいと思うことはほとんどありません。ファイルの内容(テキストまたはバイナリデータのいずれか)は、アーキテクチャ上のcharへの(有効な)ポインタを表す可能性は低いため、[内容]をとして表すことは実際には意味がありませんconst char *

代わりに、ファイルの内容をメモリにロードしてから、指定されたブロックの先頭へのポインタ(const char *型)を格納することもできます。</ pedantry>それを達成する1つの方法:

#include <sstream>
#include <fstream>
// ...
{
    std::ostringstream sstream;
    std::ifstream fs("test.txt");
    sstream << fs.rdbuf();
    const std::string str(sstream.str());
    const char* ptr = str.c_str();
    // ptr is the pointer we wanted - do note that it's only valid
    // while str is valid (i.e. not after str goes out of scope)
}
于 2010-10-24T21:08:10.987 に答える
6
#include <string>
#include <fstream>

int main()
{
   std::string line,text;
   std::ifstream in("test.txt");
   while(std::getline(in, line))
   {
       text += line + "\n";
   }
   const char* data = text.c_str();
}

データに対して明示的に削除を呼び出さないように注意してください

于 2010-10-24T20:14:43.473 に答える
1

必要がある:

  1. const char* を返す関数を作成する
  2. fstreamファイルを開く
  3. 最後まで求める
  4. ファイルの位置を見て、ファイルの長さを決定します ( tell)
  5. 最初に戻る
  6. ファイルの内容を含む char* を作成します
  7. ファイルの内容を char* に読み込みます
  8. 関数 return に const を追加して、char* ポインターを返します。
  9. fstream がスコープ外になると、ファイルは自動的に閉じられます。
于 2010-10-24T20:16:00.683 に答える