我正在为我的CS2400课程编写一个程序作为家庭作业,我们要么加密消息,解密消息,要么让用户退出。
我首先设置了这些功能而没有在定义中写太多。
到目前为止,这是我的代码。
#include <iostream>
#include <iomanip>
using namespace std;
void encryption (char message[]);//prototype
void decryption (char message[]);//prototype
int main(){
int ans=0;
char message[100];
while (ans!=3){
cout << "1. Encrypt a message.\n2. Decrypt a message.\n3. Quit\n";
cin >> ans;
if (ans==1){
encryption (message);
}
if (ans==2){
decryption (message);
}
if (ans==3){
break;
}
}
return 0;
}
void encryption (char message[]){
int count=0;
cout << "Please enter a message to be encrypted:\n\n";
cin.get(message[count]);
while (message[count]!='\n'){
count++;
cin.get(message[count]);
}
}
void decryption (char message[]){
int count=0;
cout << "Please enter a message to be decrypted:\n\n";
cin.get(message[count]);
while (message[count]!='\n'){
count++;
cin.get(message[count]);
}
}
运行时,它允许我选择三个选项,但是当选择加密或解密时,它会打印请求输入的语句然后让我再次选择而不给我任何输入的机会。
关于它为什么不给我机会输入任何内容的任何想法?
答案 0 :(得分:1)
问题是cin >> ans
不使用Enter按键(换行符)。因此,当您继续调用cin.get()
时,返回的第一个字符是上一行的Enter键。
更好的办法是将std::getline
用于所有用户输入。这样做可以避免这个问题。
答案 1 :(得分:0)
在cin.ignore()
之后使用cin>>ans