2016-11-19 4 views
1

文字列の配列に複数行のテキストを格納したい(テキストは常に同じです)。文字列へのテキストの読み込みと文字列による直接の初期化

first_line 
second_line 
... 
100th_line 

の実際の数:他の方法は

string s[100]; 
fstream fin("text.txt"); 
for (int i = 0; i < 100; i++) 
    fin.getline(s[i]); 

TEXT.TXTだろう

string s[100]={"first_line","second_line",...,"100th_line"}; 

一つの方法:私はそうする2つの方法を考えることができます行は約500になり、各行の長さは50〜60文字になります。

私の質問は次の通りです。

L.E .:最初のメソッドのテキストを別のファイルに入れて、source.cppで文字列sを使用できるようにするにはどうすればよいですか? source.cppが初期化のすべての行から厄介なものにならないようにしたいので、私はそうしたいと思います。

+0

「どのように速く/より良いですか?」「どのように速く/より良い?どのくらいの頻度でこれらの文字列が変化すると思いますか?アプリケーションの実行中に文字列を変更できる必要がありますか? –

+0

文字列は、アプリケーションの実行中は同じままです。私は、ユーザーの入力に応じて、20-30(1回に1回)ずつアクセスします。 どのメソッドが短い時間で実行されるかに興味があります。 –

+0

第3の選択肢があります。固定容量配列の代わりに 'std :: vector'を使います。 –

答えて

0

物事の壮大なスキームでは、アプローチがより良い500文字の短い文字列では、実用的な違いはほとんどなく学問的な質問です。

しかし、ファイルから読み込むには、文字列配列をただちに初期化するよりも、実行時に少しだけ作業が必要です。また、初期化ファイルが存在しない可能性を事前に準備し、何らかの方法でその可能性を処理する必要があります。

最初の文字列値をコードの一部としてコンパイルすると、エラー処理を行う必要がなくなり、少し時間が節約されます。最大の勝利は、初期化ファイルが欠落している可能性を処理する必要がないことです。確からしいことと間違っている可能性があることと、潜在的に間違っている可能性がある実際の数とは直接関係があります。

0

私は配列の中に直接文字列を構成しているので、最初の文字列と一緒に行くでしょう。ハードディスクから読み込み、最初の方法と同じ手順を実行するよりも優れています。ここで

2

一部latency number every programmer should know

memory read from cache:   0.5-7 nanoseconds 
    memory read from main memory:  100 nanoseconds 
    SSD disk access:    150 000 nanoseconds (reach location to read) 
    Hard disk access :   10 000 000 nanoseconds (reach location to read) 

だから何があなたのための最速ですか?

  • 最初のバージョンは常に速くなります:(アセンブリコードonlineを参照してください)テキストは、実行可能ファイル(アクセスなしのオーバーヘッド)と一緒にロードされ、文字列オブジェクトは、メモリ内に構築されています。

  • 2番目のバージョンでは、複数のディスクアクセス(少なくとも現在のディレクトリを開き、ファイルにアクセスする)、メモリ内の入力のバッファリングを忘れないようなオペレーティングシステムのアクション(アクセス制御など)が必要になります。そのときだけ、最初のバージョンのように文字列オブジェクトがメモリに作成されます。幸い

、ユーザーがナノ秒に気づくことはありませんし、おそらく違いを実感しません。人間の目は13 ms to identify an imageを必要とし、マウスの目からの反応時間は約215 ms(215 000 000ナノ秒)だから、

です、私の助言:予期しない最適化。機能性(コンテンツの簡単なカスタマイズ)と保守性(たとえば、複数の言語で使用されているソフトウェアの場合はローカライズが容易)に焦点を当ててください。

0

データが変更されない場合は、ソースファイルにハードコードします。

データを変更する必要がある場合は、テストまたはメンテナンスのために、データをファイルに配置する必要があります。

誰かが文句を言うまで実行速度を心配しないでください。堅牢で読みやすいコードにあなたの努力を集中させる。アプリケーションで費やされる時間のほとんどはメンテナンスです。コードを管理しやすくすると、コードの保守に要する時間が短くなります。

関連する問題