Как мне включить пробел в моей программе Caesar Cipher на C ++? - PullRequest
0 голосов
/ 01 сентября 2018

Хорошо, так в прошлый раз, когда я попросил помощи в этой программе, потому что я не мог преобразовать символы в 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

Можете ли вы помочь мне?

1 Ответ

0 голосов
/ 01 сентября 2018

getline в строке может быть вашим другом в этом случае. вот ваш код, но исправленный для его использования.

#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;
}

вы делаете еще несколько странных вещей, например, вы не берете модуль любого из ваших персонажей, например, «Z», повернутый на 1, будет «[», но это может быть по замыслу? Также предложите перебирать строку, используя стандартные итераторы, но если вы только учитесь, пока не беспокойтесь об этом!

...