C++凯撒密码跳过用户输入中的第一个单词

C++ Caesar Cipher skipping over first word in user input

本文关键字:第一个 单词 输入 用户 凯撒 密码 C++      更新时间:2023-10-16

请假设用户总是输入一个,我还没有到达用户将输入文本进行解密的代码部分。无论如何,每当我运行这段代码时,程序似乎只是跳过用户输入中的第一个单词,并加密其余的文本。我完全惊呆了,为什么会这样。

#include<iostream>
#include<string>
#include<fstream>
using namespace std;
int main()
{
cout<< "Do you want to encrypt or decrpyt your file?" << endl;
cout<< "Type 1 for encrytion"<<endl;
cout<< "Type 2 for decrption"<<endl;
string silence;
int choice;
cin>> choice;
if(choice== 1)
{
cout<< "Please enter a string to encrypt: ";
cin>> silence;
getline(cin,silence);

for(int i =0; i < silence.length();i++)
{
    if (isalpha(silence[i]))
     cout<< char(silence[i]+1);
    else cout<<silence[i];

}

}

在用silence作为parm调用getline之前,不要将cin重定向到silence,这就是覆盖第一个单词的方法。

cin>>silence

将用户输入的文本静音因此,不需要调用getLine();