掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
日本語と英語のまざる文字列をうまく折り返せません (ID:51736)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
1週間以上なやんでいます。 コンソールで、文字列を渡して、文字に枠を ●●●●●●●●● ●こんなかんじに● ●●●●●●●●● つけるメンバ関数といったことをちょっと挑戦してるのですが、 1行が長すぎて おりかえしの処理で どうやってもどこかに文字化けが入ってしまうのですが・・・。 1行の最後の文字が2バイト文字の先頭かどうかをしらべて、 それによってvectorに格納しておく長さを1バイト変えて切り取って格納 ・・・という流れなのですが・・・。 typedef std::string::size_type STR_SIZE; const MAXSTR = 76; class stamp { std::vector<std::string> vstr; ............... }; void stamp::lineturn(const std::string & str) { STR_SIZE i; STR_SIZE pos = 0; STR_SIZE row = str.length() / MAXSTR; STR_SIZE cut = MAXSTR ; for(i = 0; i < row ;i++) { if(_ismbblead( (int)str.at(pos + MAXSTR - 1) ) ) { cut = MAXSTR - 1; } else { cut = MAXSTR ; } vstr.push_back( str.substr(pos,cut)); pos = pos + vstr.back().size(); } vstr.push_back( str.substr(pos,std::string::npos)); }
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.