以字符串形式存储数据并进行比较
Storing data in string and comparing
我正在尝试制作一个程序,该程序从用户那里获取城市名称并将其存储在 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 循环中使用此功能进行相应的操作。
相关文章:
- 将字符串与文件上的数据进行比较
- 如何在 c++ 中比较 2 个链表并将匹配的数据放入另一个链表中
- 将收到的 usart uint8_t* 数据与常量字符串进行比较
- 比较付款数据
- 将constexpr字节数组与缓冲区的一部分(指向数据的指针)进行比较
- 任何方法都可以在C++中比较数据结构中的许多方法
- C++,"由于数据类型范围有限,比较总是正确的"
- 比较存储在 std::string 中的数据中的字节数
- C++ - 比较模板和类之间的数据类型
- 将此类数据作为字符串进行比较时出现问题
- 将当前多边形数据单元与下一个多边形单元格 - VTK 进行比较
- 比较 JSON::Value 变量中的数据,然后更新到文件
- 如何使用自定义比较器初始化类数据成员,该成员是 std::set
- 将 ProcessEntry32.szExeFile 与用户输入的数据进行比较时,C++ _wcsicmp代码未编译
- 可以比较不同数据类型 c++ 的模板函数
- 比较推送数据(100 万个数字)在 std::vector 中预先调整大小和没有
- 从数据文件中读取每2个字节,并在向量中进行比较
- 比较堆栈数据结构 c++
- C++:比较数据文件中的点集
- 整数类和分数类的添加和比较数据的操作符重载