C++相談室 part41
レス数が950を超えています。1000を超えると書き込みができなくなります。
0965デフォルトの名無しさん
2005/08/15(月) 20:34:55向こうで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;
}
レス数が950を超えています。1000を超えると書き込みができなくなります。