我首先要说我对此很陌生,因此,如果有相对微不足道的解决方案,请原谅我。我在这里了解到,我们可以做一阵(std :: cin >> inputs){}循环来重复做我们想做的事情,但是我似乎无法弄清楚如果输入完全为空的输入(无需输入任何信息即可按Enter键)。我将在下面包括我的代码,除此之外,它的工作方式与我想要的一样。这是一个简单的凯撒密码。当给出了无效的输入时,它会正确终止,例如d 15(这是从请求中倒过来的),但是通过按回车键根本不输入任何输入不会终止程序。预先感谢您<3。
#include <iostream>
std::string caesarencrypt(std::string ptext, int shift){
std::string ctext= "";
for(int i=0;i<ptext.length();i++){
if(islower(ptext[i])){
ptext[i]=toupper(ptext[i]);
}; /* turns everything into uppercase letters, which ASCII vary from 65 to 65+26=91 */
ctext += char( int( ptext[i]+shift-65 )%26 +65); /* take each letter, add the shift, subtract the value that makes it ASCII (65), take mod 26, then add the ASCII value again */
}
return ctext;
}
/* to decrypt, set shift=-shift */
int main(){
int shiftval;
std::string ptxt;
std::cout<< "Please input the shift value, then the plaintext, seperated by a space"<<std::endl;
while(std::cin>>shiftval>>ptxt){
std::cout << "Plaintext:" << ptxt <<"\n";
std::cout <<"Ciphertext:" << caesarencrypt(ptxt,shiftval)<<std::endl;
}
return 0;
}
对于演示问题的更简单程序,您可能会在下面的摄氏到华氏转换程序中观察到相同的行为。
// F to C temperature conversion, 1/31/19 TJMELKA
#include <iostream>
int main() {
double far;
int cel;
std::cout << "deg(F) to deg(C) conversion" << std::endl;
while(std::cin >> far){
cel=0.555556*(far-32);
std::cout << "The temperature in Celsius is, with the decimals truncated: " << cel << std::endl;
}
return 0;
}