如何使用C ++

时间:2016-05-19 20:10:25

标签: c++ search text ifstream

我制作了一个程序,根据用户输入,生成以下.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;
}

1 个答案:

答案 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;
}

这个解决方案也包括标题和底线,因为我发现它更好。如果有人有更好的解决方案,我相信后人会很感激。