>>947
向こうでlocaleの指摘をした&&cppllのログページを紹介した人間だが。
紹介先のコードが間違ってたみたい。規格を確認したら、wcstombsは
サイズnを指定した場合、「nバイトに達した」または「ナル文字を格納した」
場合にコピーを停止するから、ナル文字まで含めた文字数(つまり
バッファ長)を渡さなくちゃいけないみたい。

std::string narrow(const std::wstring& input) {
    char* buffer = new char[input.size() * MB_CUR_MAX + 1];
    std::wcstombs(buffer, input.c_str(), input.size() * MB_CUR_MAX + 1);
    std::string result = buffer;
    delete[] buffer;
    return result;
}