Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/139.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ std::cin输入与直接分配std::字符串变量不同_C++_String_Iostream_Cin - Fatal编程技术网

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;