我的老师给了我这项作业,我需要从档案中读取单词,然后对它们进行一些处理。我的问题是这些单词必须以“ hhh”结尾:例如groundhhh,wallhhh等。在寻找一种方法时,我想出了fstream库中的getline函数。问题是getline(a,b,c)使用3个参数,第三个参数要读到找到“ c”为止,但是“ c”必须是char,所以对我不起作用。本质上,我要实现的目标是从存档中读取一个单词,例如“ egghhh”,并确保如果读取了“ hhh”,则表示该行在此处结束,并且我收到“ egg”作为单词档案。我的老师用“前哨”一词来形容这件事。
这是我的尝试:
include iostream
include fstream
include string
using namespace std;
ifstream read_archive;
void showListWords(){
string word;
string sentinel = "hhh";
while (getline(read_archive,word,sentinel)){
cout << word << endl;
}
}
void openReadArchive(){
read_archive.open("words.txt");
if(read_archive.fail())
cout << "There is something wrong with the archive" << endl;
}
p.s:对不起,英语破损
[std::getline()
仅允许为其停止读取的“前哨”指定1个char
,其中'\n'
是默认值。
您可以使用此默认值,从文件中将整行文本读入std::string
,然后将该字符串放入std::istringstream
流中,并从中读取单词,直到到达流末尾为止。您发现以"hhh"
结尾的单词。
[替代方法是从原始文件流中读取单词,在找到以"hhh"
结尾的单词时停止,然后使用std::istream::ignore()
忽略当前行的其余部分,然后再次继续读取单词。