add a concept of an 8 bit string class for testing and experimentation.
This commit is contained in:
parent
45cd2756a6
commit
6274740de9
|
@ -0,0 +1,73 @@
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <string>
|
||||||
|
#include <wx/string.h>
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Class UTF8
|
||||||
|
* is an 8 bit std::string assuredly encoded in UTF8 that supplies special
|
||||||
|
* conversion support to and from wxString.
|
||||||
|
*/
|
||||||
|
class UTF8 : public std::string
|
||||||
|
{
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
UTF8( const wxString& o ) :
|
||||||
|
std::string( (const char*) o.utf8_str() )
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
UTF8( const char* txt ) :
|
||||||
|
std::string( txt )
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
UTF8( const std::string& o ) :
|
||||||
|
std::string( o )
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
UTF8() :
|
||||||
|
std::string()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
UTF8& operator = ( const wxString& o )
|
||||||
|
{
|
||||||
|
std::string::operator=( (const char*) o.utf8_str() );
|
||||||
|
}
|
||||||
|
|
||||||
|
operator wxString () const
|
||||||
|
{
|
||||||
|
return wxString( c_str(), wxConvUTF8 );
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
void aFunctionTaking_wxString( const wxString& wx )
|
||||||
|
{
|
||||||
|
printf( "%s: '%s'\n", __func__, UTF8( wx ).c_str() );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int main()
|
||||||
|
{
|
||||||
|
UTF8 utf;
|
||||||
|
std::string str = "input";
|
||||||
|
wxString wx = wxT( "input" );
|
||||||
|
|
||||||
|
utf = str;
|
||||||
|
|
||||||
|
wxString wx2 = utf;
|
||||||
|
|
||||||
|
UTF8 utf2 = wx2;
|
||||||
|
|
||||||
|
printf( "here is some text:%s\n", utf2.c_str() );
|
||||||
|
|
||||||
|
// this is the key accomplishment here, passing a UTF8 to a function taking wxString:
|
||||||
|
aFunctionTaking_wxString( utf2 );
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
Loading…
Reference in New Issue