首页 > 解决方案 > 如何在 C++ 中的 Caesar Cipher 程序中包含空格?

问题描述

好的,所以上次我在这个程序上寻求帮助,因为我无法将字符转换为 DEC 并添加到它。多亏了一些建议,我终于让它工作了,它几乎完成了。

 #include <iostream>
 using namespace std;

int main()
{
char word[128];
int x = 0;
int v;
int shift;
int sv;

cin >> shift;
cin >> word;



while (word[x] !='\0')    // While the string isn't at the end... 
{

    v = int(word[x]);


    sv = v + shift;


    x++;

   cout<< static_cast<char>(sv);

}



return 0;
}

但是我不知道如何让它接受空格使用

isspace

你们能帮帮我吗?

标签: c++encryptionsoftware-designcaesar-cipher

解决方案


getline在这种情况下,in string 可能是你的朋友。这是您的代码,但已修复以使用它。

#include <string>

int rotMain()
{
  //char word[128];
  string word;
  int x = 0;
  int v;
  int shift;
  int sv;

  cin >> shift;
  getline(cin, word);

  while (word[x] != '\0')    // While the string isn't at the end... 
  {
    v = int(word[x]);
    sv = v + shift;
    x++;
    cout << static_cast<char>(sv);
  }
  return 0;
}

你在这里做了一些有点奇怪的其他事情,比如你没有取任何角色的模数,例如旋转 1 的“Z”将是“[”,但这可能是设计使然? 还建议使用标准迭代器对字符串进行迭代,但如果你只是在学习,暂时不要担心这些!


推荐阅读