我正在尝试编写一个程序,其中我声明了两个值,即书名和isbn编号,我正在将这些值插入到map中,并将键值作为其isbn编号,因为我正在搜索isbn编号 1111111 (7乘1),但是在搜索时它永远不会变为true,这意味着 flag 不会变为 1 。 我尝试调试,虽然我打印了地图,但打印效果很好,但最终对我来说输出是数据结构书不可用,尽管在打印地图时它显示了数据结构1111111 < / strong>。这是示例输入和输出
示例输入
OOPswithc ++
1112523
数据库管理系统
1558652
计算机体系结构
1226355
Compilerdesign
1225652
计算理论
1311124
JavaProgramming
1255555
CProgramming
1555658
云计算
1322664
无线网络
1765565
数据结构
1111111
示例输出
数据结构书可用
#include <iostream>
#include<map>
using namespace std;
int main() {
string name;
int isbn,flag=0;
map<int,string> mymap;
for(int i = 0 ; i < 10 ; i++) {
getline(cin,name);
cin.ignore();
cin>>isbn;
cin.ignore();
mymap.insert(pair<int,string>(isbn,name));
}
map<int,string>::iterator itr=mymap.begin();
for(itr=mymap.begin();itr!=mymap.end();++itr) {
if((itr->first)==1111111) {
flag=1;
break;
}
}
if(flag==1)
cout<<"Datastructures book is available";
else
cout<<"Datastructures book is not available";
return 0;
}
答案 0 :(得分:1)
第一个
cin.ignore();
正在使用您输入的第一个“ 1”,就像这样,它应该可以工作
for (int i = 0; i < 10; i++) {
getline(cin, name);
cin >> isbn;
cin.ignore();
mymap.insert(pair<int, string>(isbn, name));
}