将数据存储在字符串中并进行比较

时间:2014-03-29 17:03:52

标签: c++ string

我试图创建一个程序,该程序从用户获取城市名称并将其存储在std :: string数据中,如果用户输入等于数据中的某个城市,则会产生错误。问题是我无法正确分配变量" last"在while循环中。顺便说一下,这是我作业的一部分。然而,当"同时"然而我不能实现我想要的东西。首先循环没有问题但是在第一次循环问题开始发生之后。

如果你有更好的头衔,请告知:)

要通知,我设法处理主要作业中的所有内容,这只是演示,所以首演城市名称必须是此演示的大写。

您可以在下面看到;

int main()
{
    string cityName;

    cout << "Hello, enter city name : " << endl;
    cin >> cityName;

    bool anySameCity=false;
    string data = "-Istanbul-Ankara-Izmir-Kayseri-";
    string last = "";
    int index = data.find("-");
    while(index != string::npos)
    {
        last = "";
        last = data.substr(index+1, data.find("-", index+1)-1);
        index = data.find("-", index+1);

        if(last == cityName)
        {
            anySameCity = true;
        }   
    }
    if( anySameCity == true)
    {
        data = data + cityName + "-";
        cout << "Added!" << endl;
    }

}

3 个答案:

答案 0 :(得分:1)

你知道有连字符的城市吗?使用其他分隔符,我建议'\n'

如果您使用分隔符开始和结束数据,则可以搜索字符串分隔符+ city + separator以查明它是否已存在于数据中。

最后,不要与true比较。只需直接使用变量即可。

另外,我想你想要反转anySameCity检查...

答案 1 :(得分:1)

实际上你不需要在这里循环,你可以在字符串中搜索城市:

#include <iostream>                                                                                 
#include <string>                                                                                   
using namespace std;                                                                                
int main()                                                                                          
{                                                                                                   
    string cityName;                                                                                

    cout << "Hello, enter city name : " << endl;                                                    
    cin >> cityName;                                                                                

    bool anySameCity=false;                                                                         
    string data = "-Istanbul-Ankara-Izmir-Kayseri-";                                                
    if(data.find("-" + cityName + "-") != string::npos)                                                         
    {                                                                                               
        anySameCity = true;                                                                         
    }                                                                                               
    // .......................                                                                      
    if( !anySameCity )                                                                        
    {                                                                                               
        data = data + cityName + "-";                                                               
        cout << "Added!" << endl;                                                                   
    }                                                                                               

}          

答案 2 :(得分:0)

int valid(std::string a, std::string b){
int x = 0;
for(int i = 0; i < a.length() ; i++)
    if(a[i] == b[0])
        for(int j = 1; j < b.length() ; j++)
            if(a[i +j] != b[j])
                x = 1;
return x;

}

您可以使用此功能检查从用户获取的新城市名称是否在数据中。此外,您可以在while循环中使用此功能进行相应操作。