在数组C ++中搜索单词

时间:2018-12-16 19:06:23

标签: c++ arrays search

我试图编写一个搜索函数来查找数组中的单词。我已将文本文件作为char插入到数组中,我想在此数组中搜索一个单词并返回该单词的位置。如何在此数组中搜索单词?我需要搜索一个我猜想的字符串,但是如何?

Text::Text(int s)
{
maxSize = s;
length = 0;
_list=new char[maxSize];
assert(_list!=NULL);
}
void Text::print()
{
for(int i=0; i<length; i++)
{
    cout<<_list[i]<<" ";
}
cout<<endl;
}
bool Text::isFull()const
{
return(length == maxSize);
}
void Text::insertWords(char v)
{
 if(!isFull())
{
    _list[length++]=v;
}
else
    {
    cout<<"List is full, can not insert"<<endl;
    }

}
int Text::searchWords(char v)
{
for(int i = 0; i<length;i++)
{
    if(_list[i]==v)
    {
        cout<<i<<endl;
        break;
    }
}
cout<<"Not Found"<<endl;
} 

int main()
{
Text tx;
ifstream read;
char words;

read.open("D:/the_truman_show_script.txt");

if(read.fail())
{
    cout<<"Failed to open a file"<<endl;
    exit(1);
}
while(read>>words)
{
    char info = words;
    tx.insertWords(info);
}

tx.print();
tx.searchWords();

return 0;
}

3 个答案:

答案 0 :(得分:0)

Text :: searchWords 不仅搜索单词,而且仅搜索字符,并且它永远不会返回位置,实际上返回丢失了!

即使您会找到要写为“未找到”的字符,因为 break 也必须替换为 return i return -1 或末尾缺少类似内容

答案 1 :(得分:0)

如果可以将char _list[maxsize]更改为s(_list),则可以使用find("a string"),并将字符数组转换为字符串。然后,您将拥有一个字符串,以便可以使用#include<string>,并且不要忘记添加#include<iostream>def my_func(arg): return _cpp_mod.my_cpp_func(arg)

答案 2 :(得分:0)

如果您没有义务使用数组,我建议您看一下std :: vector。

读取文件,将向量中的行推回。

std::find函数,在您的情况下特别有用,因为如果您将它与std::distance一起使用,则可以在向量中找到字符串并返回该字符串的位置。

请注意,std :: find也适用于数组,因此使用vector的std :: distance也是一个建议。