0

在下面的代码中,我想通过数组输入一些记录,最后想比较字符串的记录以生成输出。没有得到比较功能的功能。请帮忙...................

#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;
}
4

2 回答 2

1

在 C++ 中,单个刻度用于字符。del不是合法字符。所以你想要"del",不是'del'。但实际上,您应该使用比 C 样式数组更智能的东西。

于 2013-01-13T08:33:08.013 回答
0

你应该做substring = str.substr(0,3);而不是str.substr(0,2);. 记住第二个参数是 substring 的长度。所以如果你使用2, 而不是del, 你会得到de. 这就是为什么,我猜,你总是得到“无效的 id”。正如@David 所说,您还需要修复字符串周围的引号。

当然,您的代码还有其他问题,例如缓冲区溢出。您假设最多有 20 条记录,但我可以尝试输入 200 条...接受@chris 的建议并使用std::vector而不是原始字符串数组。


编辑

在解决上述问题之前,您也有一个逻辑错误。请参阅下面的代码段。

cout<< "\t\t\tdo you want to compare an string (y/n)"<<endl;
if ('y' == choice_1)
{
   compare(rec, n);
}

您要求用户输入,但您实际上并没有输入它。因此,您正在比较可能为假的未初始化char对象y,因此永远不会调用 compare 函数。

您应该cin>>choice_1if.

于 2013-01-13T08:34:54.877 回答