牛、豚、鶏、どれか一つ食べられなくなるとしたら?

こんにちは。
データファイルを読み込み、そのデータを
ハッシュテーブルにいれたいのですが、、、。
データファイルは
Kevin Bacon
Adam West
Burt Reynolds
Dom Deloise
Kirstie Alley
といった感じです。
よろしく
お願いします。

A 回答 (3件)

ifstreamのインスタンスを生成しただけでは読み込みは行われません。


ifstream.openの第1引数は、読み込み先領域のポインタではなく、ファイル名です。
ifstream.openは
ifstream dataFile;
dataFile.open("datafile.txt");
のように使用します。実際の読み込みは、cinと同様、
dataFile >> buffer;
のようにして行います。
但し、区切り文字に関しては注意してください。
# 一度、ファイルの内容をただ表示するだけのプログラムを書いてみると感じがつかめるかもしれません。

ハッシュに関しては、例示されたクラスでは不都合があると思われます。
hash値を格納するメンバが書かれていますが、データが動的に変更される可能性がある以上、これを格納することに意味がありません。
もし、データ数が少なく、かつデータが変更されないのであれば、配列をソートしてインデックスを付加した方がよほど効率的です。
ハッシュテーブルを作成する場合には、Java言語のjava.util.Hashtableクラスを参考にすると良いと思いますが、
標準的な実装としてはキーと値の組を表すクラスと、ハッシュテーブルを表すクラスの2つを作成することになるでしょう。

参考URL:http://java.sun.com/j2se/1.3/ja/docs/ja/api/
    • good
    • 0

#1さんの回答はperlのような気がしますが...


Cには連想配列がないため、連想配列を実現するライブラリを使用するか、自分で実装します。
「自分で実装」の部分を詳しく知りたいなら、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]に
入れる事は出来るのでしょうか?
よろしくお願いいたします。

補足日時:2002/03/25 00:28
    • good
    • 0

%hashに入れるとすると、



open (FILE, "datafile.txt");

while (<FILE>) {
m/(\w+)\s+(\w+)/;
$hash{$1} = $2;
}

close FILE;

でいかがでしょう?
    • good
    • 0
この回答へのお礼

早急に返信いただき、有り難うございます。
説明不足のため、すっかりC++でプログラム
をしている事を書き忘れてしまいました、、。
すみません。
c++で、わかりましたら、
返信よろしくお願いします。

お礼日時:2002/03/25 00:34

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!