以字符串形式存储数据并进行比较

Storing data in string and comparing

本文关键字:比较 数据 存储 字符串      更新时间:2023-10-16

我正在尝试制作一个程序,该程序从用户那里获取城市名称并将其存储在 std::string 数据中,如果用户输入等于数据中的一个城市,它将给出错误。问题是我无法在 while 循环中正确分配变量"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;
    }
}

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

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

你知道有些城市有连字符吗?使用不同的分隔符,我建议'n'.

如果使用分隔符

开始和结束数据,则可以搜索字符串分隔符+城市+分隔符,以确定它是否已在数据中。

最后,不要与真实进行比较。只需直接使用变量即可。

另外,我认为您想反转任何相同城市检查...

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 循环中使用此功能进行相应的操作。