- 締切済み
ファイルの読み込み
こんにちは。 データファイルを読み込み、そのデータを ハッシュテーブルにいれたいのですが、、、。 データファイルは Kevin Bacon Adam West Burt Reynolds Dom Deloise Kirstie Alley といった感じです。 よろしく お願いします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- zzzzzz
- ベストアンサー率61% (70/113)
ifstreamのインスタンスを生成しただけでは読み込みは行われません。 ifstream.openの第1引数は、読み込み先領域のポインタではなく、ファイル名です。 ifstream.openは ifstream dataFile; dataFile.open("datafile.txt"); のように使用します。実際の読み込みは、cinと同様、 dataFile >> buffer; のようにして行います。 但し、区切り文字に関しては注意してください。 # 一度、ファイルの内容をただ表示するだけのプログラムを書いてみると感じがつかめるかもしれません。 ハッシュに関しては、例示されたクラスでは不都合があると思われます。 hash値を格納するメンバが書かれていますが、データが動的に変更される可能性がある以上、これを格納することに意味がありません。 もし、データ数が少なく、かつデータが変更されないのであれば、配列をソートしてインデックスを付加した方がよほど効率的です。 ハッシュテーブルを作成する場合には、Java言語のjava.util.Hashtableクラスを参考にすると良いと思いますが、 標準的な実装としてはキーと値の組を表すクラスと、ハッシュテーブルを表すクラスの2つを作成することになるでしょう。
- zzzzzz
- ベストアンサー率61% (70/113)
#1さんの回答はperlのような気がしますが... Cには連想配列がないため、連想配列を実現するライブラリを使用するか、自分で実装します。 「自分で実装」の部分を詳しく知りたいなら、CなのかC++なのかを書いてください。
%hashに入れるとすると、 open (FILE, "datafile.txt"); while (<FILE>) { m/(\w+)\s+(\w+)/; $hash{$1} = $2; } close FILE; でいかがでしょう?
お礼
早急に返信いただき、有り難うございます。 説明不足のため、すっかりC++でプログラム をしている事を書き忘れてしまいました、、。 すみません。 c++で、わかりましたら、 返信よろしくお願いします。
補足
返信有り難うございます。 プログラムはC++で作っています。 class Name{ char name[64]; int hash[20]; public: Name(); int show(); }; というクラスを作り、 データファイル内のデータを name[64]にいれて、 ハッシュを計算しようと試みたのですが、 ファイル自体を読み込んで無いようです。 ifstream J; J.open(DATA, (ios::nocreate)); これでファイルは読み込めているのでしょうか? ファイルを読み込んで、データをname[64]に 入れる事は出来るのでしょうか? よろしくお願いいたします。