# 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
#define _DICTIONARY_H
const int size = 30
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
dictionary::dictionary()//如果記錄為空,則創建壹個*作為結尾。
{
text . open(“d:\ \ tiny-dict . txt“,IOs::in | IOs::out);
if(text . eof())
文本& lt& lt"* ";
text . close();
}
void字典::findWord()
{
cout & lt& lt“請輸入您要查詢的單詞。“
字符串字;
CIN & gt;& gt詞;
text . open(“d:\ \ tiny-dict . txt“,IOs::in);//打開文件進行讀取。
int I = 0;
while(1)
{
字符串溫度;
文本& gt& gttemp
if(temp = =“*“)//在數據末尾添加*以指示文件結束。
{
cout & lt& lt“找不到這個詞。“
打破;
}
if(word = = temp)
{
cout & lt& lt“釋義:“;
做
{
文本& gt& gttemp
if(temp = =“%”)//在解釋的末尾添加%以指示解釋的結束。
打破;
cout & lt& lt溫度& lt& lt" ";
} while(temp!="%");
cout & lt& ltendl
}
if(temp = =“%“)
打破;
I+=大小;
text . seekg(I,IOs::beg);
}
text . close();
}
void字典::insertWord()
{
cout & lt& lt“輸入您要添加的單詞。“
字符串字;
CIN & gt;& gt詞;
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;
while(z!=‘*‘& amp;& ampz!=‘+‘)//*表示結束,+表示刪除單詞留下的區域。
{
I+=大小;
text.seekp(壹);
文本& gt& gtz;
}
if(word . length()+paraphrase . length()+4 & gt;size)//單詞及其定義之間的空格和用於標記結尾的空格加上%和壹個空格,因此加上4。
{
cout & lt& lt輸入太長,插入失敗《& ltendl
返回;
}
text . seekp(I,IOs::beg);
文本& lt& ltword & lt& lt“““& lt& lt釋義& lt& lt" % ";
if(z = =‘+‘)
{
text . close();
返回;
}
text . seekp(I+size,IOs::beg);
文本& lt& lt"* ";
text . close();
}
void字典::deleteWord()
{
cout & lt& lt“請輸入刪除的單詞。“
字符串字;
CIN & gt;& gt詞;
text . open(“d:\ \ tiny-dict . txt“,IOs::in | IOs::out);
字符串已刪除;
int I =-size;//標記刪除的位置
做
{
I+=大小;
text . seekg(I);
文本& gt& gt已刪除;
if(Deleted = =“*“)
{
cout & lt& lt“找不到該單詞,刪除失敗”《& ltendl
返回;
}
}while(已刪除!= word);
text.seekp(壹);
文本& lt& lt"+ ";//第壹個元素標有+,表示為空。
for(int j = 1;j & lt尺寸;j++)
{
文本& 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選擇;
while(選擇!= 1 & amp;& 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選擇;
while(選擇!= 1 & amp;& amp選擇!= 2 & amp& amp選擇!= 3 & amp& amp選擇!=4)
{
cout & lt& lt“選擇錯誤,請重新選擇。”《& ltendl
指令();
CIN & gt;& gt選擇;
}
}
返回0;
}
D:\\tiny-dict.txt如下:(是壹本英德詞典,左欄是英語,右欄是德語)。
格雷夫沃格爾·伯德·勞布沃格爾
兔肉罐頭
猴子Affe
馬普菲德
克雷布斯螃蟹克拉比
老鷹阿德勒,Aar澤恩美元紙幣