2016-10-16 6 views
-1

私は基本的な暗号化プログラムを書いていますが、暗号化されたテキストから通常はUnicode文字の形式で入力します。私が行うときしかし、この:それは私に間違った答えを与え、文字コードを取得しますC++の文字が正しく処理されない

cout << "Your decrypted string is : " << decryptstring(text, key) << endl; 

間違った完全なèとしては-118になります。

しかし私が行うとき:それはシームレスに動作

cout << "Your decrypted string is : " << decryptstring("è", key) << endl; 

これを修正するにはどうすればよいですか?あなたが私の他のコードを見る必要があるならば、ちょうど尋ねる。あなたはUnicodeのワイド文字を使用する必要が

#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

'text'が間違ったエンコーディングです。 – tkausl

+0

真剣に、私たちはこれに答えるためのリーダーです。あなたはあなたのコードを一切与えず、あなたは 'text'の型を定義しなくても...これは全く不可能です。回答可能な質問をする方法についてのヘルプセクションを読むことをお勧めします。 –

+0

@tkauslどうすれば修正できますか? – aidan

答えて

0

:ありがとう

は私が機能をdecryptstring getline(cin, text);

からテキストを取得します。

これにより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 
+0

'std :: cin'の代わりに' std :: wcin'はどうでしょうか? –

+0

はい。もちろん。コードが公開される前に私はこれに答えました –

関連する問題