我试图编写一个搜索函数来查找数组中的单词。我已将文本文件作为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;
}
答案 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也是一个建议。