0

.txtファイルから読み取ることができる必要があるC++プログラムを作成し、各行からコマンドと引数を取得できるようにするために入力を解析します。

私はAnimals.txtを持っていると言います

A cat1 3
A dog1 4
A cat2 1
D cat1

このファイルを取得して、最初の文字のifステートメントのセットを作成し、最初の文字に対応するメインクラスの関数を呼び出して、残りの行を次のように渡すことができるようにします。引数。

私がやろうとしていることの例:

if(line[0].compare("A")==0){
    add(line[1],line[2]);
}
if(line[0].compare("D")==0){
    delete(line[1])
}

strtokクラスとstringstreamクラスを使用しようとしましたが、ニーズに合わせて実装する方法がわからないか、値が行[0]に配置されているため、ニーズに合わせて機能しません。テキストファイルの行。どんな助けでも大歓迎です。

4

2 に答える 2

1

std::ifstreamまず、ファイルを開く必要があります。std::getline次に、ファイルから行を抽出する必要があります。

std::ifstream file("Animals.txt");
std::string line;
while (std::getline(file, line)) {
  // ...
}

次に、whileループ内で、行をaに貼り付け、std::stringstream必要な値を抽出します。

std::stringstream ss(line);
char letter;
ss >> letter;
// And so on...

の場合、ステートメントでchar簡単な==比較を行うことができます。if

if (letter == 'A') {
  // ...
}

文字をに抽出する場合はstd::string、必ずと比較してください"A"

私はあなたにそれをすべて一緒に差し込んで、残りを理解させます。

于 2013-02-15T23:18:37.420 に答える
0

istringstream各行を分割するオブジェクトを作成します。

std::istringstream line(my_line);
std::string line0;
std::string line1;
std::string line2;

line >> token;
if (line0 == "A") {
    line >> line1 >> line2;
    add(line1, line2);
} else if (line0 == "D") {
    line >> line1;
    remove(line1);
}
于 2013-02-15T23:19:08.747 に答える