昨天我开始开发一种加密机器,就像凯撒密码一样。你输入一条消息(例如,HELLO),选择一个键值(例如3),结果是KHOOR(向前3个字母)。
问题是,如果我使用" cin>> MSG;"我只能编纂一个字。如果我使用" getline(cin,msg);",则代码不起作用。也许这是一个简单的问题,但我无法解决它...... :(
add.html
答案 0 :(得分:1)
所以你的代码工作正常:http://ideone.com/lBhD78
如果您尝试接受超过1个单词,则简单提取运算符将无效。这可能是你要问的问题。在这种情况下,您需要使用getline
。比如这样:
getline(cin, msg, '\n');
所以我不确定你在抱怨什么,不过这可以通过以下方式得到很大改善:
您可以通过执行以下操作来完成此操作:
transform(cbegin(msg), cend(msg), ostream_iterator<char>(cout), [&](unsigned char i){
if(isalpha(i)) {
const auto a = islower(i) ? 'a' : 'A';
i = (i - a + key_value) % 26 + a;
}
return i; });
我已用getline
写完Live Example。
答案 1 :(得分:0)
你必须小心写问题。 但是,不清楚你的意思,答案是:
在第一项中,您可以找到当前代码的工作原理,在第二项中,为什么getline-version不能。