У меня возникла проблема с запуском программы шифрования. Для строк с одним словом он работает хорошо (например, abcd), но когда я печатаю два или три или более слова (например, abcd ab ac), он не запрашивает ключ, но переписывает введенное предложение, Что я делаю не так? Заранее спасибо. Код:
#include <iostream>
#include <ctime>
#include <cstdlib>
#include <conio.h>
#include <string>
#include <stdlib.h>
#include <stdio.h>
int main()
{
int key, l;
char choose;
string message;
cout<<"Type the message"<<endl;
cin>>message;
cout<<"Give me a key from 0 to 26"<<endl;
cin>>key;
for (int i=0,l=message.size(); i<=l; i++)
{
if (isalpha(message[i]))
{
if (isupper(message[i]))
{
cout<<(char)('A'+(message[i]-'A'+key)%26);
}
if (islower(message[i]))
{
cout<<(char)('a'+(message[i]-'a'+key)%26);
}
}
else
{
cout<<message[i];
}
}
return 0;
}
использование
std::getline(std::cin, message);
cin делает только чтение до следующего пробела, остальная часть ввода хранится в буфере потока, чтобы вы получили следующее слово вашего предложения, введенное на первом шаге, в качестве ввода для вашего второго cin.