如果我通过std::cin
分配变量,我会遇到一个奇怪的问题,它与直接变量assign不同。示例I字符串与示例II字符串不同。
我使用xor decrypt函数来解密密文
如果通过std::cin
分配变量,我会得到正确的输出(例1)。但是如果我直接用密文字符串分配变量,我将获得不同的输出(例2)。
分配std::cin
和直接变量分配有什么不同?
std::string my_input;
std::cin >> my_input;
INPUT: 89001c110704918484dcdcdc85df9b9d8a2310005c08dccad8d7cccec3df824555a6dfced8df0045550 输出: http://www.test.de/|was|geht|½½½½½½½½
std::string my_input;
my_input = "89001c110704918484dcdcdc85df9b9d8a2310005c08dccad8d7cccec3df824555a6dfced8df0045550";
输出:测试■½½www.test═¯¯óμ“$&┌©½░½)¯■
如果我只获得一行,则输出与直接变量assign相同。但为什么呢?
std::string my_input;
std::getline(std::cin, my_input);
INPUT: 89001c110704918484dcdcdc85df9b9d8a2310005c08dccad8d7cccec3df824555a6dfced8df0045550 输出:测试■½½www.test═¯¯óμ“$&┌©½░½)¯■
答案 0 :(得分:0)
只是猜测问题是什么。 (这个问题需要更多细节。)
用此替换您的示例I代码:
std::string my_input;
std::getline(std::cin, my_input);
现在发生了什么?
答案 1 :(得分:0)
假设输入字符串不包含任何空格(在使用整个字符串之前会导致std::cin >> my_input
返回),结果应该相同。您可能希望比较包含密文的两个字符串,而不是比较解密文本后的结果,如:
std::string direct_assign;
local = "89001c110704918484dcdcdc85df9b9d8a2310005c08dccad8d7cccec3df824555a6dfced8df0045550";
std::string input;
std::cin >> input;
std::cout << (direct_assign == input) << std::endl;
假设结果字符串相等,则没有理由在解密时它们的行为应该不同(除非在解密函数中存在错误或如何调用它)。