# 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 & lt& lt"* ";
text . close();
}
void dictionary::findWord()
{
cout & lt& lt"請輸入您要查詢的單詞。"
字符串字;
CIN & gt;& 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 & gt;& gtword
cout & lt& lt"輸入您添加的單詞的定義。"
字符串釋義;
CIN . ignore();
getline(cin,意譯);
cout & lt& lt釋義& lt& ltendl
text.open("d:\\tiny-dict.txt ",IOs::in | IOs::out);
char z;
int I =-size;
而(z!= ' * ' & amp& ampz!='+')//*表示結束,+表示刪除壹個單詞留下的區域。
{
I+=大小;
text.seekp(壹);
text & gt& gtz;
}
if(word . length()+paraphrase . length()+4 & gt;Size)//單詞和它的定義之間的壹個空格和壹個用來標記結束的空格加%和壹個空格,所以加4。
{
cout & lt& lt輸入太長,插入失敗< & ltendl
返回;
}
text.seekp(i,IOs::beg);
text & lt& ltword & lt& lt" " " & lt& lt釋義& lt& lt" % ";
if(z=='+')
{
text . close();
返回;
}
text.seekp(i+size,IOs::beg);
text & lt& lt"* ";
text . close();
}
void字典::deleteWord()
{
cout & lt& lt"請輸入刪除的單詞。"
字符串字;
CIN & gt;& gtword
text.open("d:\\tiny-dict.txt ",IOs::in | IOs::out);
字符串已刪除;
int I =-size;//標記刪除的位置
做
{
I+=大小;
text.seekg(壹);
text & gt& gt已刪除;
if(Deleted=="* ")
{
cout & lt& lt“找不到單詞,刪除失敗”< & ltendl
返回;
}
}而(已刪除!= word);
text.seekp(壹);
text & lt& lt"+ ";//第壹個元素用+標記,表示空。
for(int j = 1;j & lt尺寸;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字符串& gt
使用STD::string;
使用STD::getline;
#包含“dictionary.h”
類別詞典
{
公共:
字典();
void find word();
void insert word();
void delete word();
私人:
fstream文本;
};
無效指令()
{
cout & lt& lt"請選擇:\n(1)。查找單詞\n(2)。插入單詞\n(3)。刪除單詞\n(4)。退出\ n ";
}
int main()
{
指令();
int select = 0;
CIN & gt;& gt選擇;
而(選擇!=1。& amp選擇!= 2 & amp& amp選擇!= 3 & amp& amp選擇!=4)
{
cout & lt& lt"選擇錯誤,請重新選擇。"< & ltendl
指令();
CIN & gt;& gt選擇;
}
字典操作;
bool exe = true
while(exe)
{
開關(選擇)
{
案例1:
oper . find word();
打破;
案例二:
oper . insert word();
打破;
案例三:
oper . delete word();
打破;
案例4:
exe = false
打破;
}
if(select==4)
打破;
指令();
CIN & gt;& gt選擇;
而(選擇!=1。& amp選擇!= 2 & amp& amp選擇!= 3 & amp& amp選擇!=4)
{
cout & lt& lt"選擇錯誤,請重新選擇。"< & ltendl
指令();
CIN & gt;& gt選擇;
}
}
返回0;
}
D:\\tiny-dict.txt如下:(是英德詞典,左欄英文,右欄德文)。
格雷弗格爾·伯德·勞布弗格爾
兔肉罐頭
猴子Affe
馬普費爾德
克雷布斯螃蟹克拉比
鷹阿德勒,Aar澤恩美元紙幣