프로그램을 작성하여 대화형 사전을 구현하면 (1) 각 단어의 설명을 조회할 수 있습니다. 예를 들어 "Hello" 를 입력하면 표시됩니다.

여기서 읽기 및 쓰기 파일의 경우 포함된 헤더 파일과 주요 방법은 다음과 같습니다.

# include & ltfstream.h & gt

# include & ltstring.h & gt

# include & ltiostream.h & gt

//파일 읽기 방법

Fstream 파일;

File.open("data.txt ",IOs:: in); //읽기를 통해 data.txt 파일을 엽니다.

File.eof () 는 파일을 읽는지 여부를 결정합니다.

File.getline(char *line, int n)

Getline 메서드는 파일에서 문자 행을 읽는 데 사용됩니다. 여기서 첫 번째 매개 변수 행은 문자열에 대한 문자 포인터 또는 문자열을 저장하는 문자 배열이며 n 은 이번에 읽은 최대 문자 수를 나타냅니다.

//파일 쓰기 방법

File.open("data.txt ",IOs:: out); //쓰기 작업을 통해 data.txt 파일을 엽니다.

File.write(char *line, int n)

Write 메서드는 파일에 문자 행을 쓰는 데 사용됩니다. 여기서 첫 번째 매개 변수 행은 문자열에 대한 문자 포인터이거나 문자열을 저장하는 데 사용되는 문자 배열이며, n 은 이번 쓰기의 문자 수를 나타냅니다.

서류. Put (char c), put 메서드는 파일에 문자를 쓰는 데 사용됩니다.

File.close (); //파일을 읽거나 쓰는 등 파일을 닫습니다. 사용 후 파일을 닫아야 합니다.

절차는 다음과 같습니다. 수정한 후에는 오류 및 경고가 표시되지 않습니다. 그러나 런타임에 단어를 찾고 삽입하고 삭제할 때 끼워집니다. 조언 좀 해주세요. 어떻게 된 거야? 대단히 감사합니다!

사전. h

#ifndef _DICTIONARY_H

# 정의 _ 사전 _H

Const int size = 30

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

Dictionary::dictionary()// 레코드가 비어 있으면 * 를 만들어 끝으로 사용합니다.

{

Text.open("d:\\tiny-dict.txt ",IOs:: in | IOs:: out);

If(text.eof ())

텍스트<< "*";

Text.close ();

}

Void dictionary::findWord ()

{

Cout & lt& lt "질의할 단어를 입력하십시오."

문자열 문자

CIN>;; & gtword

Text.open("d:\\tiny-dict.txt ",IOs:: in); //읽을 파일을 엽니다.

Int I = 0;;

While( 1)

{

문자열 온도

Text & gt& gt 온도;

If(temp=="*")// 데이터 끝에 * 를 추가하면 파일 끝을 나타냅니다.

{

Cout & lt& lt "라는 단어를 찾을 수 없습니다."

깨뜨리다

}

If(word==temp)

{

Cout & lt& lt "해석:";

하다

{

Text & gt& gt 온도;

If(temp = = """)///해석 끝에% 를 추가하여 해석 끝을 나타냅니다.

깨뜨리다

Cout & lt& lttemp & lt& lt "";

}while(temp! = "%");

Cout & lt& ltendl

}

If(temp== "") 입니다

깨뜨리다

I+= 크기;

Text.seekg(i, IOs:: beg);

}

Text.close ();

}

Void 사전:: insertWord ()

{

Cout & lt& lt "추가할 단어를 입력합니다."

문자열 문자

CIN>;; & gtword

Cout & lt& lt "추가한 단어의 정의를 입력합니다."

문자열 해석

Cin.ignore ();

게블린 (CIN, 의역);

Cout & lt& lt 해석<& ltendl

Text.open("d:\\tiny-dict.txt ",IOs:: in | IOs:: out);

Char z;;

Int I =-size;;

그리고 (z! =' *' & amp& ampz! ='+')//* 는 끝을 의미하고+는 한 단어가 남긴 영역을 삭제하는 것을 의미합니다.

{

I+= 크기;

Text.seekp (a);

Text & gt& gtz;;

}

If (word.length ()+paraphrase.length ()+4 > Size)// 단어와 그 정의 사이의 공백과 끝을 표시하는 공백에% 와 공백을 더하면 4 가 추가됩니다.

{

Cout & lt& lt 입력이 너무 길어서 삽입에 실패했습니다 < & ltendl

반환;

}

Text.seekp(i, IOs:: beg);

Text & lt& ltword & lt& lt" ""<& lt lt 해석<& lt"% ";

If(z=='+')

{

Text.close ();

반환;

}

Text.seekp(i+size, IOs:: beg);

텍스트<< "*";

Text.close ();

}

Void 사전:: deleteWord ()

{

Cout & lt& lt "삭제된 단어를 입력하십시오."

문자열 문자

CIN>;; & gtword

Text.open("d:\\tiny-dict.txt ",IOs:: in | IOs:: out);

문자열이 삭제되었습니다

Int I =-size;; //삭제 위치 표시

하다

{

I+= 크기;

Text.seekg (a);

Text & gt& gt 가 삭제되었습니다.

If(Deleted=="* ")

{

Cout & lt& lt "단어를 찾을 수 없습니다. 삭제에 실패했습니다." < & ltendl

반환;

}

} 및 (이 (가) 제거되었습니다! = 단어);

Text.seekp (a);

텍스트<< "+"; //첫 번째 요소는 비어 있음을 나타내는+로 표시됩니다.

For (int j =1; J< 크기; J++)

{

Text & lt& lt "";

}

Cout & lt& lt "가 성공적으로 삭제되었습니다."

Text.close ();

}

#endif

기본 페이지

Std:: cout; 을 사용합니다

Std:: endl;

Std:: CIN;

# include & ltfstream & gt

Std:: IOs 사용

STD::fstream; 사용

# include & lt 문자열>

STD::string;;

STD::getline; 사용

# "dictionary.h" 포함

카테고리 사전

{

공용:

사전 ();

Voidfindword ();

Voidinsertword ();

Void deleteword ();

개인:

Fstream 텍스트;

}

잘못된 명령 ()

{

Cout & lt& lt "선택: \n( 1). 단어 찾기 \n(2). 단어 삽입 \n(3). 단어 삭제 \n(4). 종료 \ n ";;

}

Int main ()

{

명령 ();

Intselect = 0;

CIN>;; & gt 선택;

그리고 (선택! = 1 입니다. & amp 선택! = 2 & amp& amp 선택! = 3 & amp& amp 선택! =4)

{

Cout & lt& lt "선택 오류입니다. 다시 선택하십시오." < & ltendl

명령 ();

CIN>;; & gt 선택;

}

사전 작업

Bool exe = true

While(exe)

{

스위치 (선택)

{

사례 1:

Oper.findword ();

깨뜨리다

사례 2:

Oper.insertword ();

깨뜨리다

사례 3:

Oper.deleteword ();

깨뜨리다

시나리오 4:

Exe = false

깨뜨리다

}

If (선택 = = 4)

깨뜨리다

명령 ();

CIN>;; & gt 선택;

그리고 (선택! = 1 입니다. & amp 선택! = 2 & amp& amp 선택! = 3 & amp& amp 선택! =4)

{

Cout & lt& lt "선택 오류입니다. 다시 선택하십시오." < & ltendl

명령 ();

CIN>;; & gt 선택;

}

}

0 을 반환합니다

}

D:\\tiny-dict.txt 는 다음과 같습니다: (영국 사전, 왼쪽 열 영어, 오른쪽 열 독일어).

그레이퍼거 버드 로브퍼거

토끼고기 통조림

원숭이 Affe

마푸펠드

크레브스게 클라비

독수리 애들러, Aar zean 달러 지폐