• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:テキストをAnsiStringに一括して読む)

C++でテキストをAnsiStringに一括して読み込む方法

このQ&Aのポイント
  • C++BuilderXE2を使用して、テキストファイルをAnsiStringに一括して読み込む方法を探しています。
  • fopen()、fread()を使用することもできますが、AnsiStringのメンバー関数であるLoadFromFile()を使用する方法がわかりません。
  • また、new演算子を使用する方法も自信がありません。ご教示いただけると助かります。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

> テキストファイル(改行はない)をAnsiString にファイルサイズに関係なくC++で一括して読み込みたいのです。 //デフォルトの文字コードのテキストファイルを読み込む #include <IOUtils.hpp> UnicodeString sjis = TFile::ReadAllText("C:\\test\\sjis.txt"); //UTF-8のテキストファイルを読み込む UnicodeString utf8 = TFile::ReadAllText("C:\\test\\utf8.txt", TEncoding::UTF8); UnicodeStringからAnsiStringへは代入すれば変換されます。 AnsiString ansi = sjis; System.IOUtils.TFile.ReadAllText - XE3 API Documentation http://docwiki.embarcadero.com/Libraries/XE3/ja/System.IOUtils.TFile.ReadAllText > これはAnsiStringのメンバーのLoadFromFileがないということになるのでしょうか。 ありません。ヘルプをご覧ください。 System.AnsiStringT のメソッド - XE3 API Documentation http://docwiki.embarcadero.com/Libraries/XE3/ja/System.AnsiStringT_Methods System.AnsiString - XE3 API Documentation http://docwiki.embarcadero.com/Libraries/XE3/ja/System.AnsiString

qhtsige
質問者

お礼

お礼が大変遅くなって申し訳ありませんでした。 C++でなく別な方法で(fread)実現して忘れてしまい、またマイページの最新リストからも外れたので気が付きませんでした。 お詫びはともかく、ReadAllText でできること確認できました。ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • textファイルについて

    あるディレクトリーに test.txt aaa.txt があるのですが、 二つのテキストを開いて もし text.txtの3行目に http://www.goo.ne.jp/ があり aaa.txtの10行目にも http://www.goo.ne.jp/ があるとすれば aaa.txtの10行目を消したいのですが、 そんな事って可能ですか?? 色々考えたのですが、aaa.txtの10行目を消す時に 10行目を空にすると言う指定が出来なくて困ってます。 どうしてもaaa.txtの削除が出来ません。 参考までにスクリプトを載せておきます <?php $file_name = array("aaa.txt", "test.txt"); $list = fopen($file_name[0], "a+"); $delete_list = fopen($file_name[1], "r"); $listfile = file($file_name[0]); $listmax = count($listfile); $listfile = file($file_name[1]); $delete_listmax = count($listfile); if ($delete_listmax > 0){ for ($delete_line = 1; !feof($delete_list); $delete_line++){ $delete_lines = fgets($delete_list); $delete_lines = trim($delete_lines); if ($delete_lines){ if (is_file($file_name[0])){ for ($line = 1; !feof($list); $line++){ $lines = fgets($list); $lines = trim($lines); if ($lines){ if ($delete_lines == $lines){ //ここの部分がわからないです fputs($list, "あああ"); echo "O,K\n"; } } } } } } } fclose($delete_list); fclose($list); echo "\n終了\n"; ?> 詳しい方がいましたら宜しくお願いします

    • ベストアンサー
    • PHP
  • 文字列の取得(BCB6.0)

    初歩的な質問なのですが・・・ テキストファイルから文字列を配列に格納したいです。 テキストファイルからTStringListには取得できているようなのですが。。。 テキストファイルの形式が 文字1 OFF、文字1 ON 文字2 OFF、文字2 ON     … となっており、コンマで区切って2次元配列に格納したいです。 どなたか宜しくお願い致します。 auto_ptr<TStringList> xSList(new TStringList()); xSList->LoadFromFile("D:\\sample.txt"); for(int i=0; i<=xSList->Count; i++) { AnsiString str = xSList->Strings[i];     …(ここで2次元配列に格納したい)

  • OpenDialogからテキストファイルの読み込み

    void __fastcall TForm1::N1Click(TObject *Sender) {     FILE *fp;      if(OpenDialog1->Execute()) { FNN1 = ExtractFilePath(OpenDialog1->FileName)         fp = fopen(FNN1.c_str(), "r" );              fread(txtdata,2,360,fp); } } [C++ エラー] Unit1.cpp(52): E2034 'AnsiString' 型は 'void *' 型に変換できない というエラーがでます。 解決方法を教えてください。

  • バイナリ形式の読み込み

    void __fastcall TForm1::LoadData() { FILE *fp; int XYData[36000],I; AnsiString A; fp = fopen( "C:\\test1\\¥A.rdt", "rb" ); if( fp == NULL ){ ShowMessage("file open error\n" ); exit( 1 ); fread(XYData,2,70000,fp);         for(I=0;I<3600; I++){ A=XYData[I]; Memo1->Lines->LoadFromFile(A); } fclose(fp); } } これでメモに表示させたかったのですがうまく表示されてません。 読み込めていないのか、使い方が間違ってるのかわからないので指導よろしくお願いします。

  • 変数からテキストファイルを保存

    サイトのソースを自動で取得するプログラムを考えいます。 その際にどこのサイトから取得したソースなのかをファイル名で整理したいと考えていますが、変数から自動的にテキストファイルを作ることができません。 どなたかお力をお貸し頂ければ幸いです。 それでは宜しくお願いいたします。 cate.txt======= shopping auction sports ============= <?PHP $Data = file("cate.txt"); for($c=0; $c<sizeof($Data); $c++){ //ここがうまく動いてくれません。。。 $filename == "{$Data[$c]}"."."."txt"; for($i=0; $i<1; $i++){ $url = "http://{$Data[$c]}.yahoo.co.jp/page={$i}"; $lines = file($url); $fp = fopen("data.txt","a"); foreach($lines as $newdata){ fwrite($fp, $newdata); } fclose($fp); } } ?>

    • ベストアンサー
    • PHP
  • No such file or エラー。

    $lines=file("file1.txt"); print_r ($lines); とかくと、 Warning: file(file1.txt) [function.file]: failed to open stream: No such file or directory in C:\************************************* on line 51 と、なります。 とうぜん、何も表示されません。 line 51 は、確かに一番上の1行の位置なのですが・・・・。 せっぱ詰まっているせいか、なにがなんだから、分かりません。+w+; PHPと、file1.txtは、同じ場所に置いています。 ”ファイルが開けない”と言われているのは、分かるんですが・・・。 なにか、簡単な事だと、思うのですが、分かりません。 一応、Apache2.0.59/PHPは、4.4.4です。 レンタルしているサーバと同じような設定にしているので、変えることはできません。 文字コードは、EUCで統一しています。

    • 締切済み
    • PHP
  • nEditというテキストエディタを改造して、自分用のテキストエディタを

    nEditというテキストエディタを改造して、自分用のテキストエディタを作ろうと考えているのですが…。 環境 OS:Windows XP 言語:C言語(bcc55) http://www.shiftup.net/ (シフトアップネット) というサイトの http://www.shiftup.jpn.org/flash/game2/ (ツクアド2) というコンテンツがあります。 子供でも簡単にブラウザ上でプログラミングができ、なお且つ簡単にゲームを公開できると言うコンテンツです。 ただ、その簡単さ故に大した機能もありません。 ファイルの分割ができない、関数と言う概念がない、マクロ定義もできない…。 そこで、ツクアド2用のテキストエディタを作成し、追加命令を作ろうと思います。 「ファイルを分割して管理し、結合する」 main.txt func0.txt , func1.txt , func2.txt という4つのファイルがあったとして、 main.txtに #include "func0.txt" (ツクアド2の言語使用ではセミコロンはコメント化なので;は使えない) #include "func1.txt" #include "func2.txt" と記述しコンパイルすると、新たにウィンドウが開いて3つのファイルを結合後のファイルを表示する。 「#enum」 #enum {A,B,C} と記述しコンパイルすると A = 0 B = 1 C = 2 に変換する などを実装したテキストエディタを作りたいです。 1からテキストエディタを作成するのにはあまりにも無知なのでオープンソースのnEditをダウンロードしてきました。 rcファイルに、コンパイル用のメニューを追加して、メッセージを受け取るところまでは作りました。 で、メッセージを受け取った後どうすればいいのかわからないんです。 正規表現を使って置換しようと思ったのですが、C言語って正規表現サポートしていないみたいです…。 そこでregex.hというライブラリを探してきて、使おうと思ったら、コンパイルエラーがでてしまいました。 どうやらstream_iteratorヘッダのtemplateという文が原因のようです。 で、よくソースを見てみるとC++のソースでしたorz .cでコンパイルできるわけもないので、.cppにファイルを変換してコンパイル…(。 したら今度はnEdit.cが驚くほど大量のエラーを履きました(C++はCの上位互換程度にしか考えてませんでしたが上手くいきませんでした。。) 流石に他人が書いたコードをcpp用にデバッグするのは厳しいです。。 なんとかする方法はないでしょうか。 他にC言語で正規表現を使えるようにする方法はありますか? それとも正規表現を使わなくても希望の動作が可能な方法はありますか?

  • DOSでコンパイルしたらインクルードファイルがない?(開けない?)

    borland c++ コンパイラ5.5をインストールして コマンドプロンプトで実行したのですが こんなメッセージがでました。どうすればよいのでしょうか? ライブラリとかいるんでしょうか? C:\borland\bcc55\Bin>bcc32 ffff.cpp Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland ffff.cpp: エラー E2209 ffff.cpp 1: インクルードファイル 'iostream.h' をオープンできない エラー E2451 ffff.cpp 5: 未定義のシンボル cout(関数 main() ) *** 2 errors in Compile *** ちなみにソースファイルの内容は以下のとおりです。 #include <iostream.h> void main(){ cout<<"ffff"; }

  • テキストファイルの指定文字列表示2

    以前質問し、解決したかに見えたのですが、元ファイルに意外なケースがあることに気づき、再度質問させていただきます。 あるブラウザにて、あるテキストファイルの部分を抽出して表示させるスクリプトを考えております。 テキストファイル自体は同階層にあり(./aaa.txt)、不定期に更新されます。内容は下記<./aaa.txt>のような構成になっております。そして下段のphpスクリプト<vvv.php>ですと希望どおりに表示されるのですが、./aaa.txtファイルの中身は状況によっては空行が最初の1回しかないケースがあります。 その場合も、 222222222222 3333333333333 4444444444 のように"111111111111"を除いた、1回目の空行までは表示させたいのですが、何か良い方法はございますでしょうか? ※このようなファイルの場合<vvv.php>で実行すると、何も出力されません。 どうかご教授お願いいたします。 <./aaa.txt> ========= 111111111111 222222222222 3333333333333 4444444444 (空行) 55555555 6666666 66666666 8888888 (空行) 9999999999999999999999 ・ ・ ========= <vvv.php> ========= <?PHP function mytrim(&$item){//(1) $item=str_replace(Array("\r","\n"),Array("",""),$item); } $lines=file("./aaa.txt");//(2) array_walk($lines, 'mytrim');//(3) $blankline=array_keys($lines,"");//(4) $lastline=$blankline[1]-1;//(5) for($i=0;$i<=$lastline;$i++){ if($lines[$i]!="111111111111"){//(6) print $lines[$i]."<br>"; } } ?> =========

    • ベストアンサー
    • PHP
  • 初心者です!すみませんがお願いします!

    すいません!緊急でお願いしたいのですが、データファイルを読み込みを行う命令文だとは思うのですが↓ ------------------------------------------------------ $data_file = "test.txt"; $ext = file_exists($data_file); $lines = $ext ? file($data_file) : array(); ------------------------------------------------------ 3行目の $lines = $ext ? file($data_file) : array();←はどういう意味なのでしょうか?サンプルプログラムの一部なのですが、こんな書き方初めてみたので。。教えていただけますでしょうか? お願いいたします!!

    • ベストアンサー
    • PHP