[表示 : 全て 最新50 1-99 101- 201- 2chのread.cgiへ]
Update time : 05/09 14:08 / Filesize : 51 KB / Number-of Response : 231
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C++で新しい文字列クラスをつくろう 2



1 名前:デフォルトの名無しさん [2006/12/26(火) 20:24:15 ]
CString , string , wstringに負けないものをみんなで作ろうね。

前スレ: pc8.2ch.net/test/read.cgi/tech/1044098312/

116 名前:デフォルトの名無しさん mailto:sage [2007/10/16(火) 02:55:26 ]
俺思うんだ...
文字コードの体系が増えれば増えるほどややこしくなってるって...


117 名前:110 mailto:sage [2007/10/16(火) 16:33:31 ]
文字を捨てよう。
動物に帰ろう。

118 名前:デフォルトの名無しさん mailto:sage [2007/10/16(火) 19:31:15 ]
それはやりすぎ。
ASCIIだけ残せばいい。

119 名前:デフォルトの名無しさん mailto:sage [2007/10/19(金) 10:27:05 ]
>>116
漏れの作った新しい文字コードをみんなが使えばいいんだ
問題はすべて解決だ

120 名前:デフォルトの名無しさん mailto:sage [2007/10/20(土) 00:17:23 ]
0x00 = ひ
0x01 = ろ
0x02 = ゆ
0x03 = き
0x04 = 改行

ここまで策定した。残りはよろしく

121 名前:デフォルトの名無しさん mailto:sage [2007/10/20(土) 19:13:20 ]
0x05ぬ
0x06る
0x07ぽ

122 名前:デフォルトの名無しさん mailto:sage [2007/10/22(月) 14:11:08 ]
0x08=ガ
0x09=ッ

123 名前:デフォルトの名無しさん mailto:sage [2007/10/22(月) 16:00:40 ]
つか、1バイト長で日本語表現するつもりですかw


124 名前:デフォルトの名無しさん mailto:sage [2007/10/22(月) 23:11:07 ]
0x0a い
0x0b つ
0x0c て
0x0d よ
0x0e し
0x0f 。
0x10 お
0x11 ま
0x12 え
0x13 も
0x14 な
0x15 ー

案外被らずにいけるもんだな。



125 名前:デフォルトの名無しさん [2007/10/22(月) 23:31:40 ]
0x16 = o
0x17 = r
0x18 = z
0x19 = O
0x1a = T
0x1b = L

126 名前:デフォルトの名無しさん mailto:sage [2007/10/23(火) 09:29:48 ]
0xfe 終
0xff 了

127 名前:デフォルトの名無しさん mailto:sage [2007/10/23(火) 10:02:20 ]
0x100宇
0x101宙
0x102ヤ
0x103バ
0x104イ

128 名前:デフォルトの名無しさん mailto:sage [2007/10/23(火) 13:13:16 ]
>>127を持ちまして可変長コードになりました。

129 名前:デフォルトの名無しさん mailto:sage [2007/10/23(火) 14:52:02 ]
>>128
しかも、それが1byte目なのか2byte目なのか判別不能な可変長コード...

130 名前:デフォルトの名無しさん mailto:sage [2007/10/23(火) 21:28:50 ]
以下、
リトルエンディアンとビッグエンディアンによる骨肉の争い。

131 名前:デフォルトの名無しさん [2007/10/24(水) 00:20:28 ]
文字列ぐらい言語仕様で持ちやがれ

132 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 08:19:51 ]
C++の歴史は文字列の抽象化の歴史だ。
言語仕様で文字列を定義したが最後、
C++の進化は止まるだろう…

133 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 12:23:40 ]
char や int のビット幅すらきめうちにはしなかったわけだからなぁ。
あ、そういうわけでビットローテートが演算子として用意されていないのかな?
ローテート結果に関して何か決めようとするとビット幅が固定されて
いないと何も言えないからねぇ。

134 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 12:40:30 ]
ローテートはビット数に依存するからCの仕様では無理だわな
VCには独自拡張であるけどね。2005からは8,16ビットにも対応してる



135 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 16:54:06 ]
>>1-135
ここの住人のやる気のなさがわかったおwwww

136 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 18:27:57 ]
もうC++で文字列使うのやめようぜ

137 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 19:40:07 ]
basic_stringはピザだからなぁ…
非メンバ非friendな便利関数としてデザインし直したものを作ってやろうかと妄想してるよ

138 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 20:03:59 ]
>>134
え?Visual C++ にはあるの?
どんな感じの構文?

139 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 20:08:16 ]
_rotl だっけ?

140 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 22:17:35 ]
それ、演算子じゃなくて関数じゃないか

141 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 22:28:16 ]
わかったよ、じゃあ文字コードの次は演算子の策定と行こうか

><< =左ローテート
>>< =右ローテート

ここまで策定した。残りはよろしく

142 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 22:47:39 ]
文字列をローテートするとどうなる。

143 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 14:23:32 ]
>>142
たぶん読みにくくてたまらない。

144 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 17:19:41 ]
>>142
ジェットストリームアタック

文字列をローテートするとどうなる。
。文字列をローテートするとどうなる
る。文字列をローテートするとどうな
なる。文字列をローテートするとどう
うなる。文字列をローテートするとど
どうなる。文字列をローテートすると
とどうなる。文字列をローテートする
るとどうなる。文字列をローテートす
するとどうなる。文字列をローテート
トするとどうなる。文字列をローテー
ートするとどうなる。文字列をローテ
テートするとどうなる。文字列をロー
ーテートするとどうなる。文字列をロ
ローテートするとどうなる。文字列を
をローテートするとどうなる。文字列
列をローテートするとどうなる。文字
字列をローテートするとどうなる。文
文字列をローテートするとどうなる。



145 名前:デフォルトの名無しさん mailto:sage [2007/10/25(木) 20:15:42 ]
>>144の中にウォーリーがいます。君はみつけられるかな?

146 名前:デフォルトの名無しさん mailto:sage [2007/10/26(金) 23:55:15 ]
みつからねぇ…

147 名前:デフォルトの名無しさん mailto:sage [2007/10/30(火) 13:01:58 ]
単項演算子「!」を提案するよ
矢印の右が演算後の値ね
詳細な仕様と実装はあとの人に任せる

!"良スレ" → "糞スレ"
!"有用な議論" → "不毛なダベり"

148 名前:デフォルトの名無しさん mailto:sage [2007/10/30(火) 20:44:32 ]
は?

149 名前:デフォルトの名無しさん mailto:sage [2007/10/31(水) 17:19:10 ]
それ実現させたらどんだけデータベース抱えたクラスになるとおもっとるんだww

150 名前:デフォルトの名無しさん mailto:sage [2007/11/04(日) 14:46:45 ]
!"このスレ" → ?

151 名前:デフォルトの名無しさん [2007/11/14(水) 21:06:23 ]
C++で独自の中置演算子を定義出来たら、
どんなに素晴らしい世界が待っているんだろう。

152 名前:デフォルトの名無しさん mailto:age [2007/11/14(水) 21:08:51 ]
ある日NOぷりすたぁ
www.freewebs.com/photoradio/?518235


153 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 21:12:28 ]
そこでホワイトスペースのオーバーライドですよ

154 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 21:49:01 ]
純粋抽象クラス(ようはインタフェース)を定義して
ファクトリから文字セットを指定してインスタンスを得る仕様がいいのかな。
バイトオーダー非依存かつマルチバイトであるUTF-8を最初にサポートすれば
他の文字セットのサポートor最適化もしやすいだろうし。



155 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 22:02:28 ]
改行やTABもやれば Whitespace っぽくできるかも
「C++で関数型プログラミング」の次は「C++でWhitespace」だな
間違いない。

156 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 23:57:32 ]
完全素人だが
内部をUNICODEで実装しといて
どんな文字列も受けれるな仕様にしたらいかんの?

157 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 08:14:02 ]
ウニ文字の内部表現はどうするのさ?

158 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 14:05:34 ]
参考までに聞きたいんだけど、JISコード(SJISじゃなくて「)を直接操作する
文字列クラスって作ったことありますか?
格納だけじゃなく検索とかの機能付きで。
一般的にはSJISに変換してるんだろうか。

あ〜、ついでに終端が0じゃない文字列コードって存在するんですか〜?

159 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 15:04:51 ]
文字のコードポイントと、エンコーディングと、
文字列の内部表現とをごっちゃにして
釣ろうとしてるようにしか見えない。


160 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 01:25:05 ]
マジレスすると、必要なのは新しい文字列クラスではなく、
エンコーディングを意識した文字列イテレータ。

さらに、部分文字列(あるいはマルチバイトの一文字分)をポイントする
beginとendのペアみたいなデータ型が標準化されれば、
色んなユーティリティを作りやすくなると思う。

161 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 03:21:34 ]
アルゴリズム(ポリシー?)を与えておけば
コピーされる際にそれを使って自動的にエンコードしてくれるって寸法か
いいなそれいいな
って誰かがもう作ってそうなふいんきだけど

162 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 15:30:10 ]
>>160
substringクラスでも作るか?

163 名前:デフォルトの名無しさん mailto:sage [2007/11/22(木) 22:55:43 ]
>>158
それはコードじゃなくてC言語系の規則。
BSTRていうのは配列の頭に文字数を入れたはずだし、
D言語ではその規則も使えるが、配列が配列長をしってるから、
そんなナンセンスなことは必要ない。

ま、C++でもVC系(これしか知らない。)のstd::stringは内部的には長さで処理しているが、便宜上0終端を強制されてる感じっぽい。

164 名前:デフォルトの名無しさん mailto:sage [2007/11/22(木) 22:59:32 ]
>>160
その希望は多分Rangeって概念だと思うよ。Boostに入ってる。



165 名前:デフォルトの名無しさん mailto:sage [2007/11/22(木) 23:02:34 ]
>>161
それいいね。でも変換関数なりを書くのが一番だるいって言う。
一回書けばつぶしが利くのだけど、その一回がなぁ。

166 名前:デフォルトの名無しさん mailto:sage [2007/11/22(木) 23:26:35 ]
>>164
チゲーよバカ

167 名前:デフォルトの名無しさん mailto:sage [2007/11/24(土) 13:04:15 ]
あれ?
あぁ、後者って書き忘れたなぁ。
エンコーディングはよぉーしらん。

168 名前:デフォルトの名無しさん mailto:sage [2007/12/07(金) 16:13:34 ]
目的のものを作っちゃった俺がきましたよ

169 名前:デフォルトの名無しさん mailto:sage [2007/12/07(金) 20:25:38 ]
>>168
公開!公開!

170 名前:デフォルトの名無しさん mailto:sage [2007/12/07(金) 20:54:18 ]
オプソ化きぼんぬ

171 名前:デフォルトの名無しさん mailto:sage [2007/12/07(金) 22:21:14 ]
オプソしたってめこめこに叩かれるだけじゃないのか?
前の方にあったiteratorが文字コードみなきゃいけないっていうのは
その通りだと思う。
だからiteratorは抽象文字を返す感じにしてるね。ope++で各文字コードに
応じたiterateをして*iteで抽象文字クラス参照を返す感じ。
ここ絶対速くないといけないから全部inline
統一iteratorさえできれば、アルゴリズムは結構全文字コードで共有化
できるから負担はだいぶ減ったかな。
wstring,stringみたいに文字コードによってクラスがちがうのは絶対やだから
UTF-16,8,sisとかも統一的に扱える感じにしてる。
なので文字端末は文字コードによって0が1つになったり2つになったり。
jisはシフトイン見たり、sjis,euc,utf-8は各バイト見たり。
結合時のbom削除とかコードの変換とか、検索時にネイティブAPI使ったり、
ほんと死ぬほど大変だった気がする。
でも誰かもうそういうのオプソでやってそうじゃね?てか需要なし?
CString使えボケ?std::wstringでいいじゃん?
力作のレスだぜ。さあ叩いてくれ

172 名前:デフォルトの名無しさん mailto:sage [2007/12/07(金) 22:36:15 ]
文字コードを知っている必要があるのはコンテナではなくイテレータだってアイデアはいいと思うよ。

173 名前:デフォルトの名無しさん mailto:sage [2007/12/19(水) 19:34:33 ]
双方向イテレータとランダムアクセスイテレータを作るのは
難しそうだけど。

174 名前:デフォルトの名無しさん [2007/12/19(水) 23:07:33 ]
文字単位でランダムアクセスできる機能は
大部分の用途に対してオーバースペックだから捨てるのが前提だ。
必要に応じて、途中のイテレータを保存しとくとか、
32bit文字オブジェクトのベクタに変換したりしてどうにかする。



175 名前:デフォルトの名無しさん mailto:sage [2007/12/19(水) 23:21:31 ]
内部表現がUTF-16なら双方向は楽でしょ。
マルチバイトとはいえ下位サロゲートが出現したら、その前を頭にすればいい。
ランダムアクセスは内部で結局はイテレートするしかないよね。

176 名前:デフォルトの名無しさん mailto:sage [2007/12/19(水) 23:48:11 ]
内部表現がUTF-16(UCS2)かUTF-8で、UCS4を取り出すようなイテレータだったら、
boostのicuで使われてるはず。

177 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 04:20:58 ]
>>174
可変長ならランダムアクセスはそもそも実装不可能だろう

178 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 13:10:06 ]
ランダムアクセスあきらめたら、
「与えられたテキストファイルで使われているすべての文字の一覧を求めろ」
と言われたときどうするの?
STLでsort() → unique()、という手が真っ先に思い浮かぶんだけど、
sort()はランダムアクセスイテレータがいるんだよね。

179 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 14:20:33 ]
コピーするほかない
コピーするのかビューなのかを
場合により選べるのがイテレータの良いところ

180 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 17:34:43 ]
どうせWin32APIの文字受け渡しが癌

181 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 17:49:42 ]
癌は受け渡しより受け取りの方だと思うが。

GetBuffer→API呼ぶ(→ReleaseBuffer) の流れからは逃れられない

182 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 17:59:40 ]
>>33を使えばAPIからの受け取りもそれほど面倒ではないけど、文字コードが違う場合には
自動で変換できるようにしないとな。

183 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 18:25:18 ]
>>33がリッチなのはわかる。
でも、ただGetBuffer/ReleaseBufferが面倒なだけだったら、単純なユーティリティクラスでいいんじゃない?

class GR {
 CString str;
 size_t siz;
 LPTSTR p;
public:
 ~GR() {
  str.ReleaseBuffer();
 }
 GR(CString &str_, size_t size_) : str(str_), p(NULL), siz(0) {
  p = str.GetBuffer(size);
  siz = size_;
 }
 operator LPTSTR() { return p; }
 size_t size() const { return siz; }
};

多分こんな風に使えるはず。

CString s;
{ GR buf(s, 1000); GetCurrentDirectory(buf, buf.size()); }

思いつきで書いただけで、コンパイルもテストもしてないけど。

184 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 19:01:05 ]
何文字返ってくるか分からないがね〜



185 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 19:27:31 ]
受け取ったらそのまま、普通に持ち運びしたいよな、何も考えずに。

186 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 21:56:39 ]
>>184
MSのプログラマですらオーバーフロー度々起こすってことはやっぱ問題があるんだよな。

187 名前:デフォルトの名無しさん mailto:sage [2007/12/20(木) 22:02:05 ]
safeiteratorを実装するしか

188 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 11:37:49 ]
>>33のcapture_stringをパクればいいんでね?

class CaptureString {
public:
 typedef char value_type;
private:
 CString *target;
 size_t size;
 value_type *buffer;
public:
 CaptureString(CString *target_, size_t size_ = DEFAULT_SIZE)
  : target(target_), size(size_), buffer(NULL) {
 }
 ~CaptureString() {
  if (buffer != NULL) {
   target->ReleaseBuffer();
  }
 }
 operator value_type *() {
  if (buffer == NULL) {
   buffer = target->GetBuffer(size);
  }
  return buffer;
 }
};

// 使用例
CString str;
fgets(stdin, CaptureString(&str, BUF_SIZE), BUF_SIZE);

189 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 14:43:07 ]
>>184,185

>>183のやつだったら、
for (GR buf(s); ! buf.enough(GetCurrentDirectory(buf, buf.size())); buf.grow());
みたいに書けるようにメソッド追加すればいいし、

>>188のやつだったら、
size_t BUF_SIZE = 100;
while (GetCurrentDirectory(CaptureString(&str, BUF_SIZE), BUF_SIZE) >= BUF_SIZE)
BUF_SIZE *= 2;
とか書けばいい。

190 名前:デフォルトの名無しさん mailto:sage [2007/12/21(金) 16:36:16 ]
結局、固定長バッファで長さ不明のもの受け取る時点で…
リトライすると結果が変わる場合もあるし。

191 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 15:18:41 ]
既出かもしれないけど
ttp://ast.qt-space.com/slibrary/sjstring.html
結構使いやすいと思った

192 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 15:41:17 ]
>>191
意図しているのかしていないのか、コードはバグっているしドキュメントには不備があるし、windows.h必須だし……

193 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 15:53:14 ]
Win32APIで可変長文字列が扱えて置換できるっていうの探してたら
ようやく見つかったから貼ってみた。
このスレ的にはナシなのか。
それでも、どこがバグってるか分からず使ってる幸せ脳なオレ

ttp://ayusya.hp.infoseek.co.jp/ProgramCString3.html
これは可変長文字列が使えないし、置換の処理が間違ってた。

194 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 15:53:35 ]
const性を全く考慮していない辺り、アイタタタなのだが。
つまり、const SJStringを作ってしまうと殆ど(或いは全部か?)のメソッドが使えなくなる罠。
const SJStringから何かを検索することも、SJStringの検索文字列をconst SJStringで与えることもできやしない。



195 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 16:03:18 ]
>>193
>191のメソッドの、parseInt()かisOnlyNumber()辺りを2バイト数字で試してみて。
>193のクラスも、>194の問題があるね。windows.hに依存しない分だけ使えそうだけど。

196 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 16:12:09 ]
ずれてる…
100→211
999→333
になった。

197 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 16:18:41 ]
書き方が悪かった。parseIntでの結果
0 1 2 3 4 5 6 8 9
1  2 4  5  6 7  8  9 3
7が出てくると0になる。(678→0)
・・・変だね。

198 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 16:20:50 ]
このスレに触発されて文字列クラス作ってるけど、疲れてきたよ。
char awstr[] = "あいaうえbおc";
typedef fixedstring<traits_SJIS> mystring;
mystring fs(awstr);
std::sort(fs.begin(), fs.end());
fs[3] = "字";
fs += 'Z';
std::string tmpstr = fs;
traits_SJIS::char_type dd("そ");
if (dd == "そ");
out_iterator<sys2_to_ucs2> oi("てすとabc文字列");
wcout << with_nul(*oi)() << endl;
fs.assign(oi);
fs *= 3;
wcout << fs;

199 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 16:55:55 ]
>>197
parseInt()の実装を見てご覧。意図的なら兎も角、こんなバグを作りこむ香具師が信用できる?

200 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 17:01:25 ]
>>199
どうやら数字を1から9まで数えられない人が作ったようです。
parseInt()だけ直して使おうかなと。
どうせ置換と可変文字列が使えればいいし。
そこだけならwindows.hもいらないみたいだし。
(一番大きな理由は自分では作れないという事)

201 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 17:06:08 ]
>>200
バグっているのはそこだけじゃないから、充分注意してね。
# つーか、MBCSなら置換も楽なんだけど……

202 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 17:08:00 ]
なんだろう。この無駄な中括弧の多さは…

文字列を修正して
CString strNumber = __TEXT("-0123456789−0123456789");

その下のif文にコレ追加して
else if (p == 11)
{
str += "-";
}

if文の終わりのところを11にすればいいのかな。
str += strNumber.charAt(p - 11);

203 名前:デフォルトの名無しさん mailto:sage [2008/01/07(月) 17:14:18 ]
parseInt()が有るのにparseDouble()なんかが無いのも不思議。
ここらへん全部作ってあるクラスがあっても良さそう。
というか探せばありそう。また探してくるわ

204 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 12:36:32 ]
結局良いのは存在しないのか・・・



205 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 13:40:06 ]
ほんとに「完璧」な文字列クラスを作ろうとすると、

・各種エンコーディングの相互変換
・各種エンコーディングの自動判別
・文字列←→整数、小数への変換
・検索、置き換え(正規表現対応で)
・マルチバイト、ワイド文字(2バイト、4バイト両方)に対応

最低でもこれくらいは必要になるからめちゃくちゃ大変。

206 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 14:21:47 ]
ヘッダーファイル一つインクルードするだけで使えるようなのがいいんだけどなぁ。
正規表現まで対応するとなるとかなりの量になるよね。

207 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 14:51:45 ]
当然イテレータで要素巡回できるようにしてほしいし、
ついでに、レンジやコンテナの要件も満たしていてほしい。

208 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 15:23:45 ]
wstringのサロゲートなんとかするだけでもいいっすよ

209 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 15:29:08 ]
そうするとchar_traitsだけじゃ足りないんだよな。

210 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 00:13:40 ]
海外のプログラマーはどうしてるんかね?
マルチバイトカンケーネーであまり気にしないんだろうか。

普段はstd::stringでも構わないんだけど
GetWindowTextとか使うときに不便だから
ここらへんを一まとめにしたようなのどこかにないかね。

211 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 14:07:59 ]
中国人とかも困ってるだろうにね。

212 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 18:58:13 ]
>>210
今度の改定でstd::basic_string<>も
vector同様に要素がメモリ上で連続されることが保証されるようになるらしい。

213 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 21:50:47 ]
中国人は字が読めるヤツは英語も読めて
英語出来ないヤツは字も読めないから問題ないんだよ

214 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 21:52:32 ]
国内向けアプリは普通中国語で作るんだろ?



215 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 22:24:57 ]
それはどうかな

216 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 05:32:36 ]
仕事でパソコンを使う奴は英語でいいし、英語を読めない奴にパソコンを教えても使えないから問題ない。

217 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 12:28:31 ]
ワープロやエディタのように英語が読めてもデータとして中国語を扱う必要もあるだろうに。

218 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 19:21:56 ]
その場合は、中国語だけを扱えばいいから何の問題もない

219 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 08:04:42 ]
アニメ「さよなら絶望先生」には

 糸色 望(いとしき のぞむ) → 絶望
 糸色 命(いとしき みこと) → 絶命
 糸色 交(いとしき まじる) → 絶交

こういったネタが出てくるのですが、これって文字コードの正規化の一種ですよね?
人気アニメでも使われるくらいなので、かなりニーズのある処理だと思うのですが、
残念ながらこういった「文字の結合」ができるライブラリを寡黙にして知りません。
そこでお願いなのですが、是非新たな文字列クラスにはこういった機能をデフォルトで組み込んでもらえませんか?

220 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 08:40:08 ]
>こういったネタが出てくるのですが、これって文字コードの正規化の一種ですよね?
いいえ。

>残念ながらこういった「文字の結合」ができるライブラリを寡黙にして知りません。
それを言うなら、「寡聞にして存じ上げません」でしょう。

221 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 12:41:52 ]
 雲
雲雲
 龍   ←これで一字
龍龍

>>これって文字コードの正規化の一種ですよね?
>いいえ。

222 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 13:34:06 ]
>>221
言葉遊びとごっちゃにしてませんか?

223 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 15:01:13 ]
糸色 = 文字コードの正規化
>>221 = 言葉遊び

なぜそう言いきれるのか理由を説明してくれ。
コンピュータにも分かるように。

224 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 15:33:56 ]
>>223
逆。
>219は言葉遊び。通称「絶望」先生は、本名「糸色望」なのだから。



225 名前:デフォルトの名無しさん [2008/02/18(月) 19:19:25 ]
>>205
エンコーディングの自動判別機能については文字列クラスじゃなく、
フリー関数かlocaleを表現するクラスのメンバ関数に持たせるべきだと思う。
国際化された検索機能などを文字列クラス自体が持つとすると、
文字列はエンコーディングとバイト列の組になっているか、
あるいは特定の内部コードに正規化されているはずだけど
自動判別アルゴリズムの入力は「バイト列」と「エンコーディングの候補」になる。
これらを与えることが可能な場所はコンストラクタしかないが、
コード変換しないでエンコーディングだけ知りたい場合に困ってしまう。

226 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 01:58:32 ]
きっと>>219が言いたかったのは
文字コードで悩むならいっそ画像化して画像解析すればいいじゃない
ってことだろう。

無いな。

227 名前:219(本物) mailto:sage [2008/02/19(火) 18:01:30 ]
私の言いたかったことは
「言葉遊びで言葉遊びを説明する・・・
そんな言葉遊びを言葉遊び的に言葉遊びで言葉遊びするという
言葉遊びを言葉遊びしてほしい」
ということです

228 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 21:12:30 ]
縦読みも正規化だな

229 名前:デフォルトの名無しさん mailto:sage [2008/03/09(日) 22:31:12 ]
俺は>>198ではないがオレ流に作ってみたので晒してみる
つ ttp://sij.dip.jp/strjp/

話にならんってレベルだったらスルーしてくれ…


230 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 18:49:20 ]
>>229
亀レスだが、文字コードによって文字列クラスを変えるのはどうかと思う。
内部フラグか何かでどうにかならんかな?

こういうことがしたい)
strjp sjis("Shift_JIS文字", encoding::sjis);
strjp euc("EUC文字", encoding::euc);
sjis = euc;
euc = sjis.conv_to(encoding::euc);






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](*・∀・)<51KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef