这是我基于文字的聊天应用的源代码。
#include <iostream>
#include<iomanip>
#include<stdlib.h>
#include<string.h>
#include<stdio.h>
#include<time.h>
#include<ctype.h>
using namespace std;
int main()
{
time_t mytime;
mytime = time(NULL);
char ques[100],ch;
cout<<setw(75)<<"Welcome To Talk Back\n\n";
start:
cout<<"So, What do you have in mind ? ";
gets(ques);
for(int i=0;ques[i]!=0;i++) //Convert string to uppercase
ques[i]=toupper(ques[i]);
//puts(ques);
for (int i =0;ques[i]!=0;i++)
{
if((ques[i]=='T')&&(ques[i+1]=='I')&&(ques[i+2]=='M')&&(ques[i+3]=='E'))
cout<<"\n\nThe Time and Date as of now is : "<<ctime(&mytime);
}
puts(ques);
cout<<"Anything Else ? Y/N ";
cin>>ch;
if(ch=='Y'||ch=='y')
goto start;
else
exit(0);
return 0;
}
问题: 当我尝试通过使用goto语句重新启动代码向用户提出新问题时,会发生以下情况:http://prntscr.com/8c5yif
我无法输入新问题。 我该怎么办 ?
由于
答案 0 :(得分:0)
std::cin
和std::cin::clear
正在使用。
#include <iostream>
#include <algorithm>
#include<iomanip>
#include<stdlib.h>
#include<string.h>
#include <string>
#include<stdio.h>
#include<time.h>
#include<ctype.h>
using namespace std;
int main()
{
time_t mytime;
mytime = time(NULL);
std::string ques, answer;
cout << setw(75) << "Welcome To Talk Back\n\n";
do
{
cout << "So, What do you have in mind ? ";
std::getline (std::cin, ques);
std::cin.clear();
//Convert string to uppercase
for (auto& character : ques)
{
character = toupper(character);
}
if (ques.find("TIME") != std::string::npos)
{
cout<<"\n\nThe Time and Date as of now is : "<< ctime(&mytime);
}
std::cout << ques << std::endl;
cout<<"Anything Else ? Y/N " << std::endl;
std::getline (std::cin, answer);
std::cin.clear();
std::cout << "Reply: " << answer << std::endl;
}
while ("Y" == answer || "y" == answer);
return 0;
}
答案 1 :(得分:0)