一日一コード 3.日本語が使えるように。
前回書いた文字列を逆にするコード。日本語対応化作業。
簡単だと思いきやかなり手がかかる。
C(というかWin32API)、D言語、C#(何もしなくていい。)はクリアしたものの、C++(wstring)は再開のめどが立たず。
我が軍はそこまでこだわる必要がないのでSTL wstring 日本語対応から撤退することと相成った。
import std.stdio;
import std.utf;
import std.c.windows.windows;extern (Windows) int MessageBoxW(HANDLE,wchar* ,wchar* ,uint);
void swapChar(wchar *a, wchar *b){wchar t= *a; *a= *b; *b=t;}
wchar[ ] reverseString(wchar[ ] str)
{
int length = str.length;
wchar* sta = &str[0];
wchar* end = &str[length -1];
for(int i=0; i < length/2; i++)
{
swapChar( sta++, end--);
}
return str;
}char[ ] reverseString(char[ ] str) //ラッパー関数
{
return toUTF8( reverseString( toUTF16(str) ));
}int main()
{
char[] str = "strong な string";
char[] ret = reverseString(str);MessageBoxW(cast(HANDLE)null, toUTF16(ret), "", MB_OK);
return 0;
}
む、[ ] がなぜか表示されてない。HTMLとはかくも恐ろしいものか。