c++ - 第二次运行时出错
问题描述
程序第一次运行完美,但第二次没有输入用户的字符串,我不知道为什么?
我认为存在问题,getline(cin,str);
但我无法解决问题
#include<iostream>
#include<string>
using namespace std;
int main(){
string str;
char check;
do{
system("cls");
cout<<"Enter the number (sample : +92121234567(Must contain 12 characters)) : ";
getline(cin,str);
cout<<endl<<str;
if(str.length() == 12){
string countrycode = str.substr(0,3);
if(countrycode == "+92"){
string citycode = str.substr(3,2);
if(citycode == "51"){
cout<<endl<<"This number belongs to Islamabad";
}else if(citycode == "42"){
cout<<endl<<"This number belongs to Lahore";
}else if(citycode == "21"){
cout<<endl<<"This number belongs to Karachi";
}else{
cout<<endl<<"Unknown Number";
cout<<endl<<"Remarks : ";
cout<<endl<<"Unknown city code";
}
}else{
if(str.substr(0,1) =="-"){
cout<<endl<<"Unknown Number";
cout<<endl<<"Remarks : ";
cout<<endl<<"Wrong country code format";
}
if(str.substr(1,2) !="92"){
cout<<endl<<"Unknown Number";
cout<<endl<<"Remarks : ";
cout<<endl<<"Unknown country code";
}
}
}else{
cout<<endl<<"Unknown Number";
cout<<endl<<"Remarks : ";
cout<<endl<<"Number is over 12 characters";
}
cout<<endl<<"Do you want to enter another number (y/n): ";
cin>>check;
//str.clear();
}while(check=='y'||check=='Y');
cout<<endl<<"End of Program. Bye!"<<endl;
system("pause");
return 0;
}
解决方案
使用 cin >> str; 不知道为什么,但 getline 也不适合我。
推荐阅读
- c# - 服务器端 Blazor Autorize 属性不起作用
- java - 已解决 - 从 Java Spring 写入 Angular 9 套接字 - 被 CORS 策略阻止
- node.js - axios 多部分表单数据
- swift - 如何通过设置 UILabel 左上角的位置在 Swift 中定位 UILabel?
- javascript - 将给定单词的索引查找到短语中
- java - 为什么错误处理程序不处理我的错误?
- ruby - 有没有办法向 Thor 类添加钩子以便在所有命令之前/之后运行代码?
- sql - SQL Server 在更新语句中排序
- r - 具有自适应数据框的闪亮应用程序,用于更改点分析
- vba - 有没有办法为 WithEvents 使用后期绑定?