在下面的代码中我想输入一些记录,最后想要比较字符串的记录来生成输出。没有得到比较功能的功能。请帮助...................
#include <iostream>
#include <string>
using namespace std;
int compare(string record[20], int numb1)
{
system("pause");
int i;
string str, substring;
cout<<"enter the string"<<endl;
getline(cin, str);
for (i=0;i<numb1;i++)
{
if(str == record[i])
{
substring = str.substr(0,2);
}
break;
}
if (substring == 'del')
{
cout<<"you have a delux type"<<endl;
}
else if ('bas' == substring)
{
cout<<"you have a basics type"<<endl;
}
else
{
cout<<"invalid id"<<endl;
}
system("pause");
return 0;
}
int enter_record(int n)
{
int i;
string rec[20];
char choice_1;
for(i=0;i<n1;i++)
{
cout<<"enter value for "<<i+1<<" record"<<endl;
cin>> rec[i];
}
cout <<"\t\t\t FINAL DESIGNED PACKAGES ARE :- "<<endl;
cout <<"\t\t\t ----------------------------"<<endl;
for(i=0;i<n;i++)
{
cout<<i+1<<". "<<rec[i]<<endl;
}
cout<< "\t\t\tdo you want to compare an string (y/n)"<<endl;
if ('y' == choice_1)
{
compare(rec, n);
}
system("pause");
return 0;
}
int main()
{
int numb;
cout<<"\t\t\t WELCOME TO TOUR PACKAGE CHECKING"<<endl;
cout<<"\t\t\t --------------------------------"<<endl;
cout<<"enter number of records you want"<<endl;
cin>>numb;
enter_record(numb);
return 0;
}
答案 0 :(得分:1)
在C ++中,单个刻度用于字符。 del
不是法律角色。所以你想要"del"
,而不是'del'
。但实际上,你应该使用比C风格的数组更聪明的东西。
答案 1 :(得分:0)
您应该substring = str.substr(0,3);
而不是str.substr(0,2);
。请记住第二个参数是子串的长度。因此,如果您使用2
而不是del
,则会获得de
。这就是为什么,我猜,你总是得到&#34;无效的ID&#34; 。您还需要修复字符串周围的引号,如@David所说。
您的代码当然还有其他问题,比如缓冲区溢出..您最多可以假设20条记录,但我可以尝试输入200 ...请听@ chris&#39的建议并使用{{1}而不是原始的字符串数组。
在您解决上述问题之前,您也遇到了逻辑错误。请参阅以下代码段。
std::vector
您要求用户输入,但您实际上并未输入。因此,您将未初始化的cout<< "\t\t\tdo you want to compare an string (y/n)"<<endl;
if ('y' == choice_1)
{
compare(rec, n);
}
与char
进行比较,这可能是假的,因此从不调用比较函数。
您应该在y
之前添加cin>>choice_1
。