我制作了一个程序,根据用户输入,生成以下.txt单词列表:
<>福夫:
“---------------------------------------------- ----------------------------------------------“
fauve的定义:
1:练习野兽派的画家的或与之相关的
2:颜色鲜艳
野兽的例子1:
“Fauve的颜色让人感觉又回到了餐具,但你真的可以 吃掉橙色,黑色和粉红色的Rorschach?“ - Julie V. Iovine,The 纽约时报杂志,1993年3月14日 野兽的例子2:
“三个是风景......另一个是后来的阿黛尔画,苍白 她紧张地站在一顶大帽子里,双臂松开 红色,紫红色和绿色的颜色。“ - 经济学人,2011年2月19日
fauve的解释:
当法国艺术评论家Louis Vauxcelles发现一尊令人想起的雕像时 15世纪的意大利艺术在前卫的作品中 一群画家 - 其中主要是亨利马蒂斯 - 在一个展览中 巴黎在1905年,他用“Donatello au。”这句话来表达他的震惊 环境恶魔!“(”Donatello在野生动物中!“)。他的 反应是对画家非常生动的非常规使用 颜色和形式的自由处理,显然他的话不远 在描述他们的艺术方面不合时宜:马蒂斯和公司的艺术 运动被称为“野兽派”,艺术家在其中蓬勃发展, “野兽派”。 1967年,他们的色彩影响仍然很大 充满活力,鼓舞人心的作家为Vogue用fauve作为形容词 描述“引人注目”的花朵外套的颜色 - 这种用途可以 仍然被发现今天生动的颜色。 -------------------------------------------------- ------------------------------------------
(PS:连字符行周围的引号被添加,因此它将显示在文本文件中。当直接粘贴它时,它只是使标题变为粗体。它实际上只是单词,然后回车,然后是连字符行,然后两个回车在“定义”之前返回。)
除了建议的条目已存在外,程序每次运行时都会附加一个新条目。
我想要做的是创建另一个程序,捕获连字符行和下划线之间的所有文本,并根据用户输入“fauve”显示它。下面是所述程序的草图,其中只缺少分配分隔符和打印文本段所需的代码。
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main()
{
string TextFile;
cout << "Enter the wordlist to search:" << "\n";
getline(cin, TextFile);
string Search;
int Offset = 0;
string Line;
ifstream iEnglishVocabulary;
iEnglishVocabulary.open(TextFile + ".txt");
string Word;
int Dummy = 0;
//Input
cout << "Enter the word:" << endl;
getline(cin, Word);
Search = "<>" + Word + ":";
if (iEnglishVocabulary.is_open())
{
while (!iEnglishVocabulary.eof())
{
getline(iEnglishVocabulary, Line);
Offset = (Line.find(Search, 0));
if (Offset != string::npos)
{
cout << THE ENTRY THAT FOLLOWS THE WORD ENTERED;
}
}
}
cin >> Dummy;
iEnglishVocabulary.close();
return 0;
}
答案 0 :(得分:0)
在仔细研究了用C ++阅读文本文件后,我确定了这个可通过但很可能远非理想的解决方案:
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main()
{
string TextFile;
cout << "Enter the wordlist to search:" << "\n";
getline(cin, TextFile);
string Search;
int Offset = 0;
int Offset2 = 0;
string Line;
ifstream iEnglishVocabulary;
iEnglishVocabulary.open(TextFile + ".txt");
string Word;
string EntryEnd = "________________________________________";
int Dummy = 0;
bool PassingEntry = 0;
bool WordFound = 0;
//Input
cout << "Enter the word:" << endl;
getline(cin, Word);
Search = "<>" + Word + ":";
if (iEnglishVocabulary.is_open())
{
while (!iEnglishVocabulary.eof())
{
getline(iEnglishVocabulary, Line);
Offset = (Line.find(Search, 0));
Offset2 = (Line.find(EntryEnd, 0));
if (Offset != string::npos)
{
PassingEntry = 1;
WordFound = 1;
cout << endl << endl;
}
if (PassingEntry == 1)
{
if (Offset2 != string::npos)
{
PassingEntry = 0;
cout << Line << endl;
}
else
{
cout << Line << endl;
}
}
}
if (WordFound == 0)
{
cout << "The word is not in the list" << endl;
}
}
//Output
cin >> Dummy;
iEnglishVocabulary.close();
return 0;
}
这个解决方案也包括标题和底线,因为我发现它更好。如果有人有更好的解决方案,我相信后人会很感激。