C++ std::cin输入与直接分配std::字符串变量不同
我有一个奇怪的问题,如果我通过C++ std::cin输入与直接分配std::字符串变量不同,c++,string,iostream,cin,C++,String,Iostream,Cin,我有一个奇怪的问题,如果我通过std::cin分配变量,它与直接分配变量不同。示例I字符串与示例II字符串不同 我使用xor解密函数来解密密文。 如果变量是通过std::cin赋值的,则得到正确的输出(示例1)。但是如果我直接用密文字符串分配变量,我将得到不同的输出(示例2) 带有std::cin的赋值与直接变量赋值有什么不同 示例一:(std::cin) 输入:89001C1107049184DCDC85DF9B9D8A2310005C08DCCAD8D7CCCEC3DF824555A6DFC
std::cin
分配变量,它与直接分配变量不同。示例I字符串与示例II字符串不同
我使用xor解密函数来解密密文。如果变量是通过
std::cin
赋值的,则得到正确的输出(示例1)。但是如果我直接用密文字符串分配变量,我将得到不同的输出(示例2)
带有std::cin
的赋值与直接变量赋值有什么不同
示例一:(std::cin)
输入:89001C1107049184DCDC85DF9B9D8A2310005C08DCCAD8D7CCCEC3DF824555A6DFCED8DF0045550
输出:½
示例二:(直接变量赋值)
输出:测试■½½www.test═¯¯óµ"$&┌©½░½)¯■
如果我只得到一行,那么输出与直接变量赋值相同。但是为什么呢
std::string my_input;
std::getline(std::cin, my_input);
输入:89001C1107049184DCDC85DF9B9D8A2310005C08DCCAD8D7CCCEC3DF824555A6DFCED8DF0045550
输出:测试■½½www.test═¯¯óµ"$&┌©½░½)¯■
只是猜测一下问题出在哪里。(这个问题需要更多细节。) 将示例I代码替换为以下代码:
std::string my_input;
std::getline(std::cin, my_input);
现在会发生什么?假设输入字符串不包含任何空格(这将导致
std::cin>>my_input
在使用整个字符串之前返回),结果应该是相同的。您可能希望比较包含密文的两个字符串,而不是在解密文本后比较结果,例如:
std::string direct_assign;
local = "89001c110704918484dcdcdc85df9b9d8a2310005c08dccad8d7cccec3df824555a6dfced8df0045550";
std::string input;
std::cin >> input;
std::cout << (direct_assign == input) << std::endl;
std::字符串直接赋值;
local=“89001C1107049184DCDCDC85DF9B9D8A2310005C08DCCAD7CCCEC3DF824555A6DFCED8DF0045550”;
std::字符串输入;
std::cin>>输入;
你能更详细地解释一下你的问题吗?我们很乐意提供帮助,但目前还不清楚您希望我们在哪些方面帮助您。您如何确定输出不一致?向我们展示这两种情况下的输出。是的,这是我以前测试过的。与直接赋值相同。我知道。但是为什么变量会被直接赋值截断呢?或者直接分配的终点线在哪里?是的,它是一样的。谢谢,因为密码被剪断了。我认为这是包含lib的问题。在独立模式下,仅使用en/decrypt方法即可。
std::string my_input;
std::getline(std::cin, my_input);
std::string direct_assign;
local = "89001c110704918484dcdcdc85df9b9d8a2310005c08dccad8d7cccec3df824555a6dfced8df0045550";
std::string input;
std::cin >> input;
std::cout << (direct_assign == input) << std::endl;