在数组中搜索字符串
Search for a string within an array
我正在为c++制作一个电话簿程序,在将搜索功能转换到主功能时遇到了问题。当我编译它并搜索名称时,它会使程序崩溃。
搜索功能:
int search(string name){
for(int i=0; i<counter; i++){
if(data[i][0] == name){
return i;
}
else{
cout << "Name not found" << endl;
}
}
}
主要功能:
int main(){
bool done = false;
int choice;
string name;
string areaCode;
string number;
load_contacts("contacts.txt");
cout << "Welcome to AddressBook" << endl;
while(!done){
cout << "What would you like to do?" << endl;
cout << "1) Display all contacts" << endl;
cout << "2) Add a contact" << endl;
cout << "3) Remove a contact" << endl;
cout << "4) Search a contact" << endl;
cout << "5) Exit" << endl;
cin >> choice;
switch (choice){
case 1:
display_contacts();
break;
case 2:
add_contacts(name, areaCode, number);
cout << "Contact Added!";
cout << endl;
break;
case 3:
cout << "Name to remove: ";
cin >> name;
remove_contacts(name);
break;
case 4:
cout << "Name to search: ";
cin >> name;
search(name);
break;
case 5: cout << "Good bye." << endl;
done = true;
break;
}
}
}
您发布的代码有几个问题,主要是由于调用了未定义的变量。
1:对于您的搜索方法,counter
突然出现,并被用作循环的数字限制器。
2:此外,在您的搜索方法中,2D数组data
也是未定义的,除非它是load_contacts
方法中未显示的全局变量集,因此当前您正在搜索一个不存在的2D数组。
3:您的"Name not found"
消息位于方法中for循环内的else
语句中,因此每次循环找不到名称时都会执行。您可能希望将其移动到循环之外进行打印,然后返回一个错误号,可能是-1
,以便稍后处理。
4:您的search
方法是int
的返回类型,但在main
中,您没有将返回值分配给任何要使用的变量,因此如果搜索成功,则不会发生任何事情。
如果我对其中任何一个都不正确,请告诉我,但我会首先关注明显的错误,看看它们是否导致了崩溃。
相关文章:
- 哪个更快:在 1d 向量中按字符串搜索还是在 2d 向量中按向量搜索?
- 有序地图字符串搜索与整数搜索之间的时间复杂度
- 使用图形的字符串搜索算法?C++
- C++子字符串搜索 - 跳入C++
- 字符串搜索 - 并行版本较慢
- 使用Robert Sedwick书中的符号表进行字符串搜索
- C++中的部分字符串搜索
- 哪个是更好的字符串搜索算法?Boyer-Moore或Boyer Moore Horspool
- 如何使用 c++ 将字符串搜索到字符串数组中
- 使用 C++ 在文件中进行字符串搜索/索引
- Qt5 中字符串搜索的最佳容器
- 优化.txt文件中的字符串搜索
- 字符串搜索输入中包含的单词
- Boyer-Moore-坏字符规则实现子字符串搜索
- 带星号*通配符的字符串搜索
- c++字符串搜索函数
- 最好的字符串搜索算法
- 通配符字符串搜索算法
- 在c++中使用字符串(搜索字符串,分割字符串,cout<<字符串)
- Strstr()函数重叠字符串搜索