■ C ユーザ、文字列どうしてる? ■

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
CからJavaに移ったんで、C++には疎い俺なんですが、
今度初めてC++の仕事をすることになりました。
で、ふと悩んでるのが文字列なんですが。
みんな文字列どうしてます?
Cみたくcharの配列使ってますか? それともMFCの
CString使ってますか? それともSTLのstring使ってますか?

性能とかもあるんだけど、政治的な問題とか流行り廃りの
問題とか、その他諸々絡んでいそうなんで、コレ使ったら
ひどい目にあったとか、そういう経験とかをききたいと思います。
あと、どうするべきだ!とか。

よろしくお願いします。
2デフォルトの名無しさん:02/08/01 12:04
>性能とかもあるんだけど、政治的な問題とか流行り廃りの
>問題とか、その他諸々絡んでいそうなんで、コレ使ったら
>ひどい目にあったとか、そういう経験とかをききたいと思います。
なんだよソレ、、、
3:02/08/01 12:07
あれ? タイトル致命的に間違えたか? ++って入れたはずなのに。
鬱だ・・・・
++が消えてるのか
かぶた
6デフォルトの名無しさん:02/08/01 12:18
だいたい話しの切り出しからして、ヘン
>CからJavaに移ったんで、C++には疎い俺なんですが、

意味のねぇこと言ってる?
しかも1で。しかもスレ立てて聞くまでもない。
途中で、MFCとかでてきて、
最後に、政治的な問題とか、流行りとか、、、。
で、ひどいめにあったとか、、、。
さらに、盛り上げようとしてる、、、。
7デフォルトの名無しさん:02/08/01 12:18
>>1
その程度の知識で、どうしてC++の仕事が出来るんだこのボケ
8デフォルトの名無しさん:02/08/01 12:20
1は、真症のDQN爺と判明。
9デフォルトの名無しさん:02/08/01 12:21
分かった!
1は、最近ソフト業界に逝ったばかりで、
PGのピの字も知らなくて、2ちゃんで気取りたいオヤジ。
合ってる?<1
10名無しさん:02/08/01 12:23
>>1
マジレス。
C++使ってんならMFCのCStringもSTLのstringも悪くないが、
MFCは他とのライブラリの相性が徹底的に悪いので、
MFCだけではすまないような案件ならば最初からSTL使った方が吉。
C++で文字列を扱うのは苦痛だ。
どの方法も最善ではない。
stringでいいじゃん。
マンセー
なんで文字列ごときにテンプレートなんか使っているんだろう・・・。
>>1
漏れはチャー。
15:02/08/01 12:38
>>4-9
そのとおりなんです、すんません。

>>10
やぱりstringが一番使われてるんすかね。
エンジンとGUIの開発なんですが、エンジンのところはUNIX
とかにも移植されるかも知れないと思ってるんで、全部
stringか、GUIまわりだけCStringにするか、いっそ
全部charか、とか思ってるんですが。
UNIXに持ってったら開発環境がいきなり古くて、STLの
サポートもない、なんてことがあったら困るなあ、とか思って
るんです。実はUNIXも疎くて・・・
わざわざスレ立てなきゃいかんほどの問題なのか
17デフォルトの名無しさん:02/08/01 12:58
>15
でも、最近ソフト業界に逝ったばかりにしては、
知識だけはあるみたいだが。どうゆう成り行きでソフト業界に逝ったのだろう
18デフォルトの名無しさん:02/08/01 13:01
              (゚Д。 ;。グヒャッ
   ,,,ヾ''ヽ/       ~~~~
 (( \ 1\/
     \____|  ))
       ∫        ∧_∧ 
              l⌒l´∀` )<>>1はとっとと!
              ヽ ヽ   つ
             ((( \_   ノ
                  \ ヽ
                    し''
好きにしろ、ボケ
>>15
ならまずg++をインスツールしる
21名無しさん:02/08/01 13:13
>>1
STLをサポートしてない開発環境ってちょっと思いつけんが。
#BREWはどうなんだコラとか言われるとちょっと答えられんが。
そこまで不安ならcharにしとけば?Cは慣れてるんでしょ?
22デフォルトの名無しさん:02/08/01 13:17
でも1みたいな人、業界にもいそう。
(´-`).。oO(漏れ、AnsiString‥‥‥)
stringって使ったことないな
charで十分ってゆーか、なんか
Cやってたときのライブラリを使いまわしてるだけで
C++の機能って全然使ってないな・・・
なんでおれC++使ってるんだろ・・・
助けて・・・
     >>24
     ↓
|    △     |
|  〔(゚ ∀ ゚)〕  .|
(⌒⌒⌒⌒⌒⌒⌒)
|⌒⌒⌒ <⌒ヽ o 。  うああぁぁ...
|      <_  ヽ。
|      o とノ ノつ
|       。  | 〜つ
>>24
//が便利だから使ってんだろ。きっと。
27お諭し:02/08/01 14:08
迷える24よ。
案ずることはありません。
C++でありとも、Cを互換しているではありませんか。
C++でCのままでやって、
C++が必要かと思ったら、C++を見てみればいいのです。
というより、C++の機能は、Cでもライブラリで補完できます。
28デフォルトの名無しさん:02/08/01 14:10
24=1
とみた!
stlのstringでいいじゃん。
なにが不満?
C++でも文字列の基本は char の配列で十分だよ
文字列処理には、C++で独自の文字列/文字列コンテナクラス
を作ってそれを使っているよ。

最初はstlがいまいちだったから仕方なく作り始めたんだけど、
作っているうちに楽しくなってきた。アルゴリズムの勉強にも
ちょうど良いネタだしね。
>>30
charの配列が使いやすいと思っているのか?
使いやすい、とは書いてないけど?
>>31
趣味とか勉強ならいいけどな。
日本語が絡むと既存のクラスは使う気になれない
36ねかま:02/08/02 00:31
>>29
日本語に対応していないのが不満。
自分で派生クラス作ったけど。
>>35
後学の為に、CStringで日本語を扱って
困った所を教えてください
STLのstringつかったことないんだけど。
stringのcharにくらべたいいところってなにがある?
(あんまりSTLは勉強してないもんで(w..)
# じゃぁなんでC++を使ってるのかといわれたら//とclassが便利だからだろうなぁ
39デフォルトの名無しさん:02/08/02 11:38
string使ってるとか言ってる人って、
SJISとか可変長の文字コード扱うときはどうしてるの?
おれは独自libなんですが。
>36
>日本語に対応していないのが不満。

「こんにちわ」の長さは5って出なきゃやだ!とか?
37>>
charで昔よくやったポカ
 ディレクトリをチェックすとき'ソ'とかの2バイト目を'¥'マークと間違える。
 文字列の長さに10バイトとかの制限をかけたとき、最後の1バイトに全角1バイト目がひかっかる。
4236:02/08/02 12:43
>>40
SJISの環境で下のコード試してみろ。
{
  std::string str("さっさと帰れBAKAの国へ");
  std::string::size_type pos = str.find('A');
}

漏れはpos==13となって欲しいが・・・
"表\"
試してないのでわからんけど、strlen()でも同じ結果になるのでは?
ならないのかな。
>42
納得。
46デフォルトの名無しさん:02/08/02 22:17
age
ふと思ったがCユーザならSTLとCStringは邪道だろ。
49shige:02/08/02 22:54
Rubyでみんな幸せに。
Rubyの文字列のエンコーディングは何?
>>50
LZ
>>50
Binary, EUC-JP, SHIFT-JIS, UTF-8
動的配列は何がいいですか?ってそろそろ聞かれそうな予感。
unix上では、std::stringを使ってる。
char*は、関数から文字列を返す場面で使いにくい。
MFC/Win32のときはCString。

文字列なんてchar*で十分、といってる奴は、まともな文章処理したこと
ないヘタレか、数々の文字コードにもまれてchar*以上に万能なもの
はない、という結論に達した達人。
>>54
で、それから?
動的配列は何がいいですか?
57デフォルトの名無しさん:02/08/03 00:32
>>56
func(static int n){
char array[n];
.....
brk
>>57
いい時代になったなぁ・・・。
>>54 
文字列なんてchar *で十分とは思わないが、
 やっぱり ライブラリを作ろうとする時は char *で作っておかないとな という気分ね

組み込みの仕事がメインだから(それじゃ食べられないからメインではないんだけど気分はメインね)
ライブラリ用のコードは今だに C で書いておかないとって感じなのさ

func(static int n){
static char array[n];
.....

storage size of `array' isn't constant

しょぼーん
つーか生成したあと動的にサイズを変えられないと
動的配列とはいわんのでは?
63デフォルトの名無しさん:02/08/04 23:27
んなこたーない
と、思う。
Stringって動的配列なのかな?
違うよね。
>>64
実装を考えるなんてナンセンスです。
66デフォルトの名無しさん:02/08/05 01:19
ところで、C++だとstringって
自分でfreeしたりとかする必要があるんですか?
(゚ Д ゚)・・・・・。
68デフォルトの名無しさん:02/08/05 01:41
>> 66
freeするのはmallocしたやつだけでそ
69デフォルトの名無しさん:02/08/05 03:49
>>68
じゃあ、戻り値stringとかやってもいいんですね。
便利だな。C++勉強しようかな。
Winだと内部的には全部std::wstring。必要なときだけSJISに変換。これ。
71デフォルトの名無しさん:02/08/05 06:24
MFC使ってたらCStringが便利でしょ。
日本語の問題があるからマジよくわからない。
CStringはっ問題無いってのはわかる。
ただ、STLの場合どうすればいいんだ。
wstringと言われてもイマイチよくわからない。
例えば、SJISの日本語のファイルから一文字読むにはどうしたらいいのか。
EUC環境下にそのコードを持ってくとどうなるのか。
その辺ちゃんと解説した本なりwebって見たこと無い。
>>72
文字コードについて説明されてるページなんぞ星の数ほどあるが。
>>73
文字コードについてじゃなくて、STLの文字列ライブラリの
文字コードに対する適用の仕方が知りたい。
例えば、「wstirng euc sjis」で日本語ページを検索しても
たったの6件しか出てこず、ちゃんとした解説は皆無だったんだが。
char_traits
>>74
ふつーUCS-2に変換。mbstowcs/wcstombsなんて標準関数はあるが、
基本的には自力。APIも使えたりはするが。
まぁ、内部処理にしか使わないならShift_JISを16bit化するような方法もある。
77デフォルトの名無しさん:02/08/10 20:16
>76
自力って、変換テーブル持ってんの?

文字列処理(日本語処理)って頻繁に必要だし、なんかやだなぁ。
> 内部処理にしか使わないならShift_JISを16bit化するような方法もある

あーお手軽かもしれんね

でも埋め込み文字列がどうしようもないという...
埋め込むなって?そりゃごもっとも
79デフォルトの名無しさん:02/08/18 21:38
>>78

> でも埋め込み文字列がどうしようもないという...
自作文字列クラスのコンストラクタがあるじゃん。

CStringOriginal enemyName("クッパ大王"); // <- 内部形式に変換
80デフォルトの名無しさん:02/08/18 22:07
>>26
C99ではサポートしていると聞きました。
> 自作文字列クラスのコンストラクタがあるじゃん。
> CStringOriginal enemyName("クッパ大王"); // <- 内部形式に変換

ソースコードはEUCなんですけど、SJISで格納したいのですが・・・
SJIS EUC JIS UCSの変換ルーチン書けばいいじゃん。
内部形式はUCS-4で。
>>82
ソースコードにはどう記述しますか?
84デフォルトの名無しさん:02/08/21 09:25
>>76
自前でUCS-2にするのは大間違い。mbstowcs系を使うのが正解。
どうしてもUnicodeが好きなら、
basic_string<oresama_unicode>にしる。
85デフォルトの名無しさん:02/08/21 17:13
>>84
string str;
stringbuf strbuf(str);
iostream ios(strbuf);

// 自前の変換iostream
euc2sjis e2s(ios);

/* EUCな文字列を・・ */
e2s << "あいうえお" << endl;

/* SJISな文字列を出力 */
cout << str << endl;

こんな使い方があるらしいねぇ。
>>84
なんで大間違いなの?
住民基本台帳がoresama_unicodeじゃなかったかな。
すべてのcharが同サイズなら単にwide charでもいいとは思うけど。
>>86
まず、wchar_tがUnicodeでない環境はいくらでもあるから、
UCS2を選んでしまうと、事実上Windowsでしか使えなくなる。
それはまだいいとして、バックスラッシュとか結合文字が絡むと、
OSのlocaleの実装次第で、同じ文字が違うUnicode文字に変換される
ことがあるのだ。同じ理由で、自分でUCS2変換するとすれば、
結果のコードはOSのlocaleとは互換性が無い。
(それがoresama_unicodeって書いた理由ね)
wcstombsできないwcをライブラリに食わせたら、何が起こるか
分からんぞ。
1)文字コード変換をサポートしなければならないとすると
mbs2wcsやwchar_tは使い物にならん。内部形式をUCS4にして
iconvを利用するのが多分一番楽で汎用性高し
2)Windows + CP932オンリーでいいのなら(クライアントサイドの
多くの仕事はこれに該当するだろう)CStringでもwstringでも
使っとけ
3)日本語を含む文字列リテラルが問題を生じる可能性がある場合は、
Makefileで適切なフィルタを用いてリテラルをescapeせよ

つー感じでいいのかな。UNIX環境の場合にどうするかは微妙だな。
いちいち真面目なL10N or I18N対応を毎度毎度やっとれんだろう。





OS依存するならmbstowcs系
依存しないなら自分で変換する(もしくはiconvを利用する)
ってことでいいのかな?
91デフォルトの名無しさん:02/08/23 14:54
>>90
mbstowcs系ならwchar_tの中身はOS依存だけど、「OS依存する」
という言い方はあまり適当ではないと思う。
localeサポートがまともな環境(これがネックなんだが)に
持っていく限りは移植性もある。
あと、後でSJISに変換するつもりなら、iconv使うのは危ない。
最後までUnicodeでいくなら構わないだろうけど。
>>91
それは、Unicode系とSJIS/CP932間のマッピングテーブルが一意でないことを
云ってる?
漏れの理解では、むしろUTF-8あたりをむき出しでデータ交換に使うこと
が危ないという認識なんだが。全角チルダや全角ハイフンなどがどっちの
コードで格納されているかが分からないんで、その全てに対応する
必要が有る。


93デフォルトの名無しさん:02/08/23 19:26
typedef char string[256];
マッピングが(用意されているとはいえ)処理系/言語/環境で一致していない
という問題はもっとクローズアップされていいと思うんだが・・・

Java(細かく言うとJDK1.2と1.3と1.4)/.NET/iconvが
全て同じマッピングかというとそうでもない。
結局自前しかないのか
>>94
Javaと.NETってUCS-2そのままだと思ってたけど違うの?
>>96
マッピングの話だっての。SJIS読んで何か処理してEUC-JPで吐いて
各処理系で結果が同じになる保証がネーヨという話。
ヤバイのは、プログラムの外までUnicode系(普通はUTF-8だと思うが)
のコードを持ち歩くこと。全てのプログラムで用いているマッピングテーブル
が一意であると保証できる訳が無いので、トラブルを好んで招くような
ものだ。例えばOracleのUTF-8環境にNet*8ではなくJDBCのThinドライバで
接続したりとかは完璧にヤバい。
Unicodeを経由したコード変換がプログラムの内部に閉じていれば問題は減るのだが、
Javaは現時点では結構おバカ(好き好んで二つのマッピングテーブルを
抱え込んでおり、しかもコンバーターで相互変換をサポートしている訳でも
無い)なので、MS932→EUC-JPなどの変換をやろうとするとあっさり文字化けが
発生する。
iconvをプログラムの中で使用する分にはそういう問題はないと認識しているが...
>>98
そういう意味ではiconvもマッピングエンジンの一つだから、
プログラムのバージョン違い、テーブルのバージョン違いという問題は
起こりうるだろうよ。

内部で閉じてて、全てのモジュールが同じバージョンのコード&データ
を用いるならば、文字化けなどが起こる確率は低いだろうけど、
最近はそうもいってらんないからなあ...
どっちかというと、最近はUTF-8を拒否してばかりもいられないという罠
>>100
UTF8の問題ではないことに気づけよ...
>>101
誰もUTF-8の問題とは云ってないよ。
外部コードとしてのUTF-8などのUnicode対応をするならば、
結局は問題があろうが無かろうが、iconvなりなんなりの
マッピングテーブルによるコード変換システムを使用せざるを得ないと
云っている。

sprintf(commandLine, "perl %s", scriptFileName );
FILE* pipe = popen( commandLine );
104age:02/09/07 21:32
保全age
std::stringって
sprintf("%d%s%c", 0, 's', "age");みたいなのあるっけ?
例えば
std::string str;
str << 0 << 's' << "age";

ちなみに私は上記のものは自作の文字列クラスで
cstr % 0 << 's' << "age"; // % は operator= , << は operator+=(もちオーバーロード
みたいにしてるけど
%s%c -> %c%sね
標準の範囲でやるなら
 std::string str;
 std::stringstream ss;
 ss << 0 << 's' << "age";
 str = ss.str();
だろうね。
108デフォルトの名無しさん:02/09/12 01:59
>>105
sprintfの第一引数にフォーマット文字列ですか。
型が合わないわけではないからコンパイルエラーにはならないだろうけど。
>108
どうでも良いけど、
const外してないからコンパイルエラーになるのでわ
110デフォルトの名無しさん:02/09/12 07:51
>>109
ハァ?
>>110
108の意味お分かりで?
112デフォルトの名無しさん:02/09/12 16:32
VC++6.0とBCCにバグ発見!
sprintf("%d%s%c", 0, 's', "age");とやってもエラーがでません!
>>109
文字列リテラルは書き換えられないけど、評価した場合、返す値はconst char *じゃないよ。char *だよ。
>>112
お前はそれに何を期待してるんだ?
>>112
何の間違いもないように見えるんだが…
116112:02/09/12 17:03
>>114-115
遠回しに>>109を晒しあげ
ぷっ
112は突っ込むのさえ馬鹿らしくなってくる
>>114
NULLフォーマット文字列にアクセスして異常終了。では。
>>113
エラーが出ないというのは、sprintfの戻り値がEOFじゃないという意味か?
>>120
コンパイルエラーってなんだか知っている?
122121:02/09/12 20:34
・・・・・きっと>>112へのレスのつもりだな・・・
>>122
sprintf って int sprintf(char*, const char*, ...); でしょぉ?
> sprintf("%d%s%c", 0, 's', "age");
第1引数 "%d%s%c" は char* 型。問題なし。
第2引数 0 は const char* 型の NULL 値ということで問題なし。
第3引数と第4引数は任意だから問題なし。
なんでコンパイルエラー?通るのが正常と思うよ。
124121:02/09/12 21:38
>>123
それは馬鹿な>>109に言ってやれよ(ワラ
125121=113:02/09/12 21:41
しかも俺はコンパイルエラーが出るなんて一言もいってねーぞ。
出ると言っているのは>>109だろ。
お前らいくら暇だからってネタにマジレスすんなよ・・・
127111:02/09/13 09:52
109じゃないけど、今の今まで文字列リテラルはconst char *だと思ってた・・・
ごめんなさい。芯で来ます。
でも調べてみたらchar *でもないらしいね。
ええと、厳密には char[] なのかな。
"Hello" だと、char[6] という型。sizeof("Hello") == 6 だったような。
型にうるさい混パイラは嫌いだ
>>128
どうなんだろ
例えば、旧来(現在の源流?)のOSなら内部のCと通常使用のC
関数(apiに相当するのか?)が存在したし・・・
c++混在の混パイラなら、実現方法は腐るほどある。
何処にデータをぶちこむ(配置す)べきか、とかも、混パイラを作る
人間次第だと思う。
混パイラが撥ねているだけで、実は通るものである可能性もある。
ハードウェアプロテクトに引っかからない限りは結構自由にできたり
する可能性もある。

とりあえずはANSIの見解・規定に沿うのが良いのかもしれない。
その行為事態は別にたいした意味なんて無いと思うけれども、、、
131111:02/09/15 18:51
>>128
基本的にはconst char[]なんだけど、特別にchar *への標準変換
が用意されていて、その優先順位は、const char *への変換よりは
低い、ということらしい。
http://www.catnet.ne.jp/kouno/c_faq/c16.html#6
16.6:
なぜ以下のコードはクラッシュするのか。

char *p = "hello, world!";
p[0] = 'H';

A:

文字列定数は、(ようするに)配列の初期化指定子として使われるとき を除いては、必ずしも変更可能ではない。以下の方法を試すこと。

char a[] = "hello, world!";

質問1.32も参照のこと。

References:
ANSI Sec. 3.1.4; ISO Sec. 6.1.4; H&S Sec. 2.7.4 pp. 31-2.
>>132
bccはくらっしゅしなかった。asm見たらごく普通に実現されてた。

メモリ書き込み禁止部分に文字列を格納したりするって事か?
p[0]をキャラのポインタ配列の一番目と判断するのか?
セグメントレジスタが絡むようだと全くの別問題だろうし、、

アセンブラはかせないとわからんな・・・
http://www.catnet.ne.jp/kouno/c_faq/c6.html#2
これの話か、大概は。。
最近はみかけないが、、、こういう変換をするヤシ
> メモリ書き込み禁止部分に文字列を格納したりするって事か?

定数部分は組み込み系だとROMにしちゃったりするんでない?
136デフォルトの名無しさん:02/09/17 14:26
メモリ少ない類いのものの上で動かす場合は、
Cのソース見ているだけでは元々駄目な気はする。
(旧いCって大概はこういう機種のうえで動くし・・・)

どういう部分にどんな方法でメモリが確保されているか
調べないと、ロクに動きもしない気がする。

普通にCで書いたらメモリの半分も有効利用できない
だろうし。
勘違い小僧一名ご案内〜
writeln
readln
139デフォルトの名無しさん:02/10/11 00:01
というか、C++ で文字列に char * や char [] は、特別な理由がない限り使わない。
単に文字列使いたいなと思ったら自動的に std::string を使おう。
VC++ でも BCB でも、CString や AnsiString は最低限にしておるぞ。
GNU C++ とも移植性がある品。
Javaに移行する予定があったりするときは、
AnsiString使った方がよかったりするんだよなあ。
限定した話でスマソ
日本語扱う場合はどうするの?
>>136
つーかオプジェクトの配置は
リンカの仕事なのだが。
ナニがダメなの?
旧いCってナニ?K&R?
旧いとメモリの少ない機種で動くの?
ナニと比べてメモリの半分なのか?

言いたいことがさっぱり分からんが。
オレが無知なだけ?
Cなんて糞言語使うのが悪い。
アセンブラが最適。
>>144
仕事ありません、よ。
146デフォルトの名無しさん:02/10/11 09:03
>>141
std::string でも日本語扱えるでしょ。
それとも、ASCII と DBCS とが混在して、1 文字(1 バイトではない)ずつのアクセスが
いや〜んということ?
なら、std::wstring を使えばいいよ。SBCS も DBCS もみんな 1 文字になるからね。
ちなみに、std::wstring は wchar_t 型の文字列だけど、wchar_t 型がどういうエンコーディングだかは
ANSI では規定されていません。Unicode でもいいし、16 ビットにした ASCII+SHIFT-JIS でも EUC-J
でもいい。
そこら辺は、今やっているプログラムで最適なようにやればいいです。

ANSI 互換にするとすれば、wchar_t 型の格納される値がどうなるかを感知しないようにして、
常に char <-> wchat_t の変換に mbstowcs()、wcstombs() を使えば、コンパイラが変わっても
互換性があります。
>>146
日本語処理に、(恐らく)外国生まれのライブラリを使うのは
抵抗ありませんか?
148デフォルトの名無しさん:02/10/11 09:52
少なくともVC.NETで使用できるCStringはMFC依存ではないので
MFC嫌いの人でも大丈夫です。
_TCHARや_()マクロを使ったSBCS,MBCS,DBCSの切り替えができるので
俺はこいつを使用してます。
書式化付のコンストラクタとか、メンバ変数も充実してるし。
_() → _T() です。
さらに訂正、コンストラクタで書式化はできなかった・・・
自作の拡張クラスと混同してた・・・
逝きます・・・
おまえら真面目にやれよ!!!
アニヲタの自覚あんのかよ!!
ラムが基本なんだよ!すべてはここから始まるんだよ!!
原作を完読しれっ!!TVシリーズを10日で全部見ろっ!!
亜空間アルバイトの回やつるつるセッケンの回をキャプしろっ!!!
口付け宅急便の扉絵を涎と精液でドロドロにしろっ!!!
話 は そ れ か ら な ん だ よ !!!
他のキャラに走るのはラムが卒業できてからなんだよ!!!
たとえ卒業できなくたって構やしねぇんだよっ!!!
原点なんだよ!!!伝説なんだよ!!!神話なんだよ!!!
ラム語れねぇヤシが偉そうな口たたくんじゃねぇよっ!!!
卒業できねぇヤシが『本気ラム』なんだよっ!!
もう一回言うぞっ!!!
おまいら真面目にやれよっっっ!!!!
ラムステーキ
>>151
素晴らしい縦読み作品ですた
>>147
CStringも外国生まれだと思いますが
つまり自作しろということですか?
VC.NETのCStringは気合はいってるねえ
>CString
メンバ"変数"が充実してるらしいから、
インスタンスのメモリ消費量が多いんだろうけどな(w
そういう意味じゃないよ。
画像やサウンドに比べれば、
文字列の消費メモリなんて微々たるものだろう

そういう意味じゃないゆ
画像やサウンドに比べれば、
文字列の使用頻度は高いから問題だろう

そういう意味じゃないゆ
(Д ゜)・・・・・。
strcmpで文字列全体を毎回舐めるのはもったいないと思った
162193:02/10/23 22:14
俺は、<string.h>のstr系をstdio.hで表現できます。
 すごいでしょ。 でも、mem系はできないけど。
はあ?
164193:02/10/23 22:22
char *str_rchr(const char *s1,int s2)
{
s2=(char)s2;
const char *p=s1;
while(*s1!=*s2){
if(*s1=='\0')
return NULL;
if(*s1==*s2)
p=s1;
s1++;
}
return ((char*)p);
}
おっと!!宣言の位置間違えた。
166675=678:02/10/23 23:06
普通にSTL勉強したいんだけどおすすめさいと教えてケロ。
Cしかやったことない。
C++勉強ついでにやりたいと思っていまふ。
167デフォルトの名無しさん:02/10/23 23:08
>>166
関数型言語スレ
>>168
これって何なんよ?意味分からん。
>>168
氏ね
171デフォルトの名無しさん:02/10/23 23:19
168 は

ブ ラ ク ラ でつ。

踏まないように!!!!!!!!!
172デフォルトの名無しさん:02/10/23 23:19
168 は

ブ ラ ク ラ でつ。

踏まないように!!!!!!!!!
168 のアフォ 発見

◆(){}[]カッコの付け方(){}[]◆ スレ
の 290 と同じ。
氏ね うじ虫
174shige:02/10/24 21:51
http://www.shiro.dreamhost.com/scheme/gauche/memo-str-j.html

文字列について
日本語を扱うことはGaucheの当初からの目標であった。それも、出来れば日本語に限らず、多国語対応にしたいなと。問題は実装だ。

.
178 は

ブ ラ ジ ャ ー ク ラ ッ シ ャ ー でつ。

揉まないように!!!!!!!!!

ブラクラ萌え
↓ブラクラ?
ここ5回もふんじゃったYo
http://homepage2.nifty.com/rohizuka/ka/pa_003_a.htm
178 ふざけるな。
日本語扱う場合はどうするの?
>>24-25
182デフォルトの名無しさん:02/10/30 15:07
SJIS や EUC を扱える string を作る。
もしくは UNICODE にして wstring に放り込む。
char_traits弄るだけじゃダメな時ってあるね
>>1
糞スレ立ててないでEffective C++くらい読め!
VC(SDK)で大量の文字列を置換、検索しなければならずシコシコやってるんですが
かなり鬱です・・・死にたい・・。
186デフォルトの名無しさん:02/11/04 03:50
187185:02/11/06 15:13
>>186
どうもです。
今は、char配列とcharポインタで、根性コーディングしてますw
VB 最強!
VB のランタイムのでかさは最強だよね。
VB4 になる前は弱かったけど。
1は、真症のDQN爺と判明。
何を今更。