XMLにてエスケープする必要のある文字(<>&"')をエスケープします。
#include <stdio.h>
#include <tchar.h>
#include <iostream>
#include <string>
#include <locale.h>
/*
XMLのエスケープ文字をエスケープする
*/
std::wstring EscapeXmlString
(
std::wstring oString
)
{
std::wstring oRet;
std::wstring::iterator ite = oString.begin();
std::wstring::iterator iteEnd = oString.end();
while( ite != iteEnd ) {
wchar_t wChar = *ite++;
switch( wChar ) {
case L'&':
{
oRet += L"&";
}
break;
case L'<':
{
oRet += L"<";
}
break;
case L'>':
{
oRet += L">";
}
break;
case L'"':
{
oRet += L""";
}
break;
case L'¥'':
{
oRet += L"'";
}
break;
default:
oRet += wChar;
break;
}
}
return( oRet );
}
int _tmain
(
int argc
, _TCHAR* argv[]
)
{
// 標準出力にユニコード出力する
setlocale( LC_ALL, "Japanese" );
// XMLのエスケープ文字をエスケープする
std::wstring str = EscapeXmlString( L"<>&¥"'" );
// 標準出力へ出力する
std::wcout << str << std::endl;
// 正常終了
return( 0 );
}
&<&>&&&"&'