2016-05-05 16 views
0

文字列をWStringに変換する方法。文字列をWstringに変換する方法C++ Visual Studio

EscapeXMLを変換する前に、最初に文字列をwstringに変換する必要があります。

例:

私は文字列値= "& & &" を持って、私はwstringのにこの文字列を変換したいです。

私のソースコード:

string escapeXML(const std::string & value) 
{ 
    // Here 
    CA2W ca2w(value.c_str()); 
    wstring value = ca2w; 

    int output_size = EscapeXML(value.c_str(), value.length(), 0, 0, ATL_ESC_FLAG_ATTR); 

    std::wstring testout; 
    testout.resize(output_size); 
    EscapeXML(value.c_str(), value.length(), &testout[0], output_size, ATL_ESC_FLAG_ATTR); 

    using convert_type = std::codecvt_utf8<wchar_t>; 
    std::wstring_convert<convert_type, wchar_t> converter; 

    string converted_str = converter.to_bytes(testout); 

    return converted_str; 
} 

int main() 
{ 

std::string test = " & & & "; 
cout << escapeXML(test) << '/n'; 

    return 0; 
} 

マイ出力:

C2082: redefinition of formal parameter 'value' 
IntelliSense: argument of type "const char *" is incompatible with parameter of type "const wchar_t *" 
+0

あなたのコードを実行しないと、私はあなたの問題/質問を見ることができませんか?あなたは何を期待していましたか、あなたは何を見ましたか/見ましたか? –

+0

私は今ケースを更新します。私はあなたが問題を理解することを願っています:) – Skydreampower

+0

あなたの助言のためにありがとう@computerfreaker。 – Skydreampower

答えて

0

私は今、問題を発見しました。問題は値の重複についてです。

私はvalueという文字列とvalueというwstringにあります。この方法では動作しません。私は値の名前を変更する、それは解決策です。ありがとう。

#include "stdafx.h" 
#include "atlenc.h" 
#include <string> 
#include <iostream> 
#include <codecvt> 
using namespace std; 


string escapeXML(const std::string & value) 
{ 
    CA2W ca2w(value.c_str()); 
    wstring value2 = ca2w; 
    int output_size = EscapeXML(value2.c_str(), value.length(), 0, 0, ATL_ESC_FLAG_ATTR); 

    std::wstring testout; 
    testout.resize(output_size); 
    EscapeXML(value2.c_str(), value2.length(), &testout[0], output_size, ATL_ESC_FLAG_ATTR); 

    using convert_type = std::codecvt_utf8<wchar_t>; 
    std::wstring_convert<convert_type, wchar_t> converter; 

    string converted_str = converter.to_bytes(testout); 

    return converted_str; 
} 



int main() 
{ 

    std::string test = " Bayern & Münschen"; 
    std::string test2 = " \" \" \" "; 
    std::string test3 = " ' ' ' "; 
    std::string test4 = "< < <"; 
    std::string test5 = " > > >"; 

    cout << escapeXML(test); 
    cout << escapeXML(test2) << '/n'; 
    cout << escapeXML(test3) << '/n'; 
    cout << escapeXML(test4) << '/n'; 
    cout << escapeXML(test5) << '/n'; 

    return 0; 
} 
関連する問題