我找到了这样的其他主题,但没有一个正在发挥作用,无论我输入什么,它都会一直返回-1。 Idk为什么,谢谢!
if(combobox.Selectedindex==-1)
{
MessageBox.Show("Please Select an item");
}
else
{
MessageBox.Show("An Item was selected");
}
答案 0 :(得分:1)
您可以使用标准C ++中提供的函数std :: string :: find。有关如何使用它的示例,请参阅this link。
特别需要开发两个主要步骤:
下面是使用vector而不是array的示例代码。
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int find(vector<string> arr, string seek)
{
for (int i = 0; i < arr.size(); ++i)
{
if (arr.at(i).find(seek) != string::npos) {
return i;
}
return -1;
}
}
int main()
{
vector<string> info;
info.push_back("Becky Warren, 678-1223");
info.push_back("Joe Looney, 586-0097");
info.push_back("Geri Palmer , 223-887");
info.push_back("Lynn Presnell, 887-1212");
info.push_back("Holly Gaddis, 223-8878");
info.push_back("Bob Kain, 586-8712");
info.push_back("Tim Haynes, 586-7676");
info.push_back("Warren Gaddis, 223-9037");
info.push_back("Jean James , 678-4939");
info.push_back("Ron Palmer, 486-2783" );
cout<<"Please enter a name and you will be returned a phone number"<<endl;
string name;
cin>>name;
// x is the string in the array containing the name written by the user
int x = find(info, name);
// Check if at least one was found
if(x == -1)
{
cout << "Name " << name << " not found." << endl;
return -1;
}
// extract number from the found string (find comma position and then take a substring starting from that position until the end
int commaPosition = info.at(x).find(",");
string phoneNumber = info.at(x).substr(commaPosition+2);
cout<<"Phone number found: " << phoneNumber<< endl;
system("pause");
return 0;
}
答案 1 :(得分:1)
你的问题是你的返回 - 1应该在for循环之后。当你检查你的字符串是否在数组中的某个位置时,你只执行一次,因为在if语句之后程序看到返回-1这意味着&#34;哦,我现在应该退出函数并返回-1& #34 ;.
for (int i = 0; i < len; ++i)
{
if (arr[i].find(seek) != string::npos)return i;
}
return -1;
当你遇到这么简单的问题时,我建议你使用调试器,它会告诉你你在程序中到底做了什么。