没有输入时,终止C ++程序

时间:2019-02-25 14:12:08

标签: c++ io termination

我首先要说我对此很陌生,因此,如果有相对微不足道的解决方案,请原谅我。我在这里了解到,我们可以做一阵(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;



}

0 个答案:

没有答案