一日一コード 3.日本語が使えるように。

前回書いた文字列を逆にするコード。日本語対応化作業。
簡単だと思いきやかなり手がかかる。


C(というかWin32API)、D言語C#(何もしなくていい。)はクリアしたものの、C++(wstring)は再開のめどが立たず。
我が軍はそこまでこだわる必要がないのでSTL wstring 日本語対応から撤退することと相成った。

D言語。 ソースコードUTF-8


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とはかくも恐ろしいものか。

まとめたページ