我有一个我编写的基本加密程序,它从用户的加密文本中获取输入,通常是以Unicode字符的形式。但是当我这样做时:
cout << "Your decrypted string is : " << decryptstring(text, key) << endl;
它给了我错误的答案,并且完全错误地获取了字符代码,例如è
将是-118
。
然而,当我这样做时:
cout << "Your decrypted string is : " << decryptstring("è", key) << endl;
它无缝地工作!
我该如何解决这个问题?如果您需要查看我的其他代码,请询问。感谢
我从getline(cin, text);
decryptstring函数:
#include <iostream>
#include <string>
#include <vector>
using namespace std;
string decryptstring(string text, string key)
{
//Declare variables
int i = 1;
int result;
int tmp;
int tmp2;
vector < char > arr;
//Start decryption
while(i <= text.length())
{
/*
Get letter from the string and get letter from key
and use Vigenere cipher to decrypt the data.
*/
tmp = text[i - 1];
tmp2 = key[i - 1];
cout << tmp << endl;
//Get encrypted value
result = tmp - tmp2;
//Change it into readable stuff
arr.push_back(result);
//Increment i
i++;
}
string str(arr.begin(), arr.end());
return str;
}
答案 0 :(得分:0)
您需要为unicode使用宽字符。
因此decryptstring
:
std::wstring decryptstring(const std::wstring& text, const std::wstring& key) {
// Do stuff
return text;
}
然后
std::wcout << L"Your decrypted string is : " << decryptstring(text, key) < std::endl;
std::wcout << L"Your decrypted string is : " << decryptstring(L"è", key) << std::endl;
其中
std::wstring text; // is declared before use