1


0

#include #include #include

名前空間stdを使用する。

string strWord(int index、string line){intカウント= 0;文字列の単語。 for(int i = 0; i <line.length(); i){if(line [i] == ''){if(line [i 1]!= ''){

カウント   ; if(count == index){return word; word = ""; else {word = line [i];} }}}




int main(){ifstream inFile; inFile.open( "new.txt");文字列行、ID。

cout << "Enter id:"; cin >> id; while(!inFile.eof()){getline(inFile、line);} if(strWord(1、line)== id){cout <

質問は:誰かが私にこれを説明することができます私はそれが何をしているかわからない私は概念を得ることを意味するが、各行は何をしているのですか?

5 Answer


3


各行のコメントが欲しかった

// function that returns a word from 'line' with position 'index'
// note that this is not a zero based index, first word is 1,
// second is 2 etc ..
string strWord(int index、string line){intカウント= 0; //読み取りワード数string word; //(int i = 0; i <line.length(); i){//(line [i] == ''){//の場合、{line '内のすべての文字に対して反復(line [i 1]!= ''){//次の文字はスペースではないので、単語数の読み取りは完了です。 //(count == index){//これが探していた単語ですか? 単語を返します。 //はい、そうでしたので、それを返してください。} word = ""; //いやそれはしませんでした.. だから単語をリセットして 'line'}}の次の単語からやり直す。 そのため、文字を 'word'に追加します。word = line [i]; }}}

int main()//プログラムの主な機能は、ここから実行を開始する{ifstream inFile; //入力ファイルストリームオブジェクトを作成します。inFile.open( "new.txt"); // "new.txt"という名前のファイルにストリームを関連付けます。 //

cout << "Enter id:"; // console cin >> idに "Enter id:"と書き込みます。 //コンソールから入力を読み込み、結果を 'id'に入れます

while(!inFile.eof()){//ファイルgetline(inFile、line)から読み込むものがある限り、次の操作を行います。 //(strWord(1、line)== id){//ファイルから1行読み込み、その値を 'line'に入れる cout << strWord(2、line)<< endl; //改行の2番目の単語を印刷します。 // whileループを終了します}}

システム( "一時停止"); //プログラムを一時停止します(避けるべきです)}


2


私はあまり注意深く読みませんでしたが、最初の単語がユーザーによって入力されたものである行の2番目の単語を出力するように見えます。


2


多分これは役立ちます:

// return word[index] from line
string strWord(int index、string line)//ワードインデックスと実際の行{int count = 0; //現在の単語インデックス文字列word; //ワードバッファ(戻り値)

for(int i = 0; i <line.length(); i)//行内の各文字をループ処理する{if(line [i] == '')//現在の文字がスペースの場合{if(line [ i 1]!= '')//しかし次の文字はスペースではない、我々は単語{count;を得た。 //(count == index)// if count ==がインデックスの戻り語を検索した場合word = ""; //そうでなければワードバッファをリセットする}}そうでない場合//文字はスペースではない{word = line [i]; //ワードバッファに文字/数字を追加します}}}

例えば、行がスペースで始まっている場合、上記のアルゴリズムは失敗します。そのため、インデックスが無効な場合やインラインが空の場合は、処理しないなど、対処する必要があるインデータに関する仮定がいくつかあります。 関数が失敗した場合、最後の戻り値もありません。


1


あなたはC用の対話型デバッガを持っていますか? たとえば、このコードをMicrosoft Visual Cにロードすると、一度に1ステートメントずつプログラムをステップスルーしながら、各変数の値を調べることができます。 これは、新しいコードが詳細レベルで何をするのかを学ぶための素晴らしい方法です。


0


文から任意のインデックスを持つ単語を取り出してそれを返すstrWordと呼ばれる関数があります。

メインプログラムは、各行にidと別の単語を含むファイルを開き、読み込み可能な状態に保ちます。

それから、それはユーザからのidを求め、idがファイルのいずれかの行の最初の単語であるかどうかチェックします。 もしそうなら、それはその行から2番目の単語を取り、それを印刷します。

それで全部です。 特定の行または一連の行に問題があるかどうかを尋ねます。

あるいはGregが示唆しているように、デバッガに行きなさい。 それがロジックを理解するための最も簡単な方法でしょう。