【C++】template 統合スレ -- Part4
>>932 std::string(NULL) 見た目で最も「stringでNULLを扱う」にマッチする。これ最狂。
>>940 その手もアリだが、個人的にはお勧めしない。エラーチェックのコードが
そこら中に散らばって煩雑になりがちだから。
頭の悪いやつは書き込むな
結局stringでNULLを扱うの意味は決定してるのか?
こんなレスあって感動した、、よくやった。(TωT)ウルウル
std::vector<std::string> &array
array.push_back(strtok(NULL, " "));
とした時NULLが入ってきてエラーになってしまうんです、、
単純に
char ch = NULL;
array.push_back(ch);
ということはできないんですよね?
>>947 > std::vector<std::string> &array
> array.push_back(strtok(NULL, " "));
> とした時NULLが入ってきてエラーになってしまうんです、、
strtokなんて標準C規格の癌みたいな関数使うなYO!
> char ch = NULL;
変数がポインタじゃありませんが?
>>947 > char ch = NULL;
おい待て。そもそも NULL は「何も指してないポインタ」のことで、文字列の
終端は '\0' だぞ。
C++ だと様々な都合から、大抵の処理系で #define NULL 0 されてるから
うっかり char ch = NULL; もコンパイル通るが、意味的にはコンパイルエラーに
されても文句言えん。
>>947 そんなもん、NULLかどうかpush_backの前にチェックしろよ。
932はCからお勉強しなおしなさいってことでFA?
そのまえに日本語勉強しろって事でFA
C++ では普通は strtok って使わないの?
典型的なVBプログラマにはきついって事でFAです。はい。(。´Д⊂)
>>954 Cでも使わないよ。バグってるんだもん。
A,B,,Dみたいなレコードがうまく拾えなかったり。
つーかtemplate何の関係もないじゃん…
>>954 そうだな、CだろうがC++だろうが使わない。
まず関数のシグネチャが腐っていて(関数内にstatic変数で状態を抱える)
マルチスレッド環境で使えないのは誰の目にも自明。
それと、「パース処理」をあーいう関数でおこなうこと自体がbad idea。
パーサは、1文字づつ読んで状態遷移するように書くのが定石。それを分
かった上でstrtok_r()で手抜きするのは、使い捨てコードなら止めないが
932は使っちゃダメ、絶対。
strtok は使わず基本的に自作ってことですか?
スレ違いながら勉強になりました
CStringArray.add見たいにNULLが入っても気軽にできないかなと思っただけ
なんですけどね、、
そういうのがあるのならCStringArrayとやらを使ったらどうですか?
>963
MFCは使いたくないと思ってしまいまして、、STLを勉強しようかと思いまして。
>>963 むかつくのは解かるが、そういう返答は的外れだと思う。
>>964 書き込む前に、質問の内容を自分以外が理解できるか、推敲とか反芻とかしましょう。
>964,965
そうしまつ。みなさんアリガトウ(。´Д⊂)
最後の最後までわけわからんw
>>947くらいなら、
istringstream + skipwsで十分。
> >964,965
> そうしまつ。みなさんアリガトウ(。´Д⊂)
>>963,965の間違えでした。
STLと日本語勉強して出直します。。
>>968 何ですかそれ?
>>969 調べてから聞け
脊髄反射するな
スレを汚すな
> STLと日本語勉強して出直します。。
>
>
>>968 何ですかそれ?
インターネットの常識も勉強したほうが良いですね。
この書き込みを見ると、何だか某M女史の「どうやったら退会できますか」を思い出します。
そろそろ次スレが必要だな
↑
>>974 次スレ<typename iTa>は放置の方向で。
ifstreamで一行ずつ読み出すには>>演算子の後にstringをやっていました
string str; ifstream fi(file);
if >> str;
これをistream_iterator<string>でも同様に動くことを期待して
vector<string> v;
copy(istream_iterator<string>(fi), istream_iterator<string>(), back_inserter(v));
としてみたのですが、強制終了されてしまいます。
上のようにvectorに一行ずつコピーするにはどのようにすれば
思い通りの結果となるのでしょうか?
どうかよろしくお願いいたします
>>976 環境は?
fi がすでにファイル末端だったりはしないの?
細かいことだが、back_inserter 使うときは insert が使えるかどうか良く見た方がいい
v.insert(v.end(),istream_iterator<string>(fi),istream_iterator<string>());
>>977 環境はVisualStudio.NET 2002をそのまま使っています
ifstreamを作ってからすぐにやっているので先頭だと思うのですが
これで出来るということは自分のプログラムにおかしな部分が
ありそうなのでもう一度確認したいと思います
>>978 今のところはvectorに保存しようと思っております
>>980 ありがとうございます
それで試しています
17
16
F
E
D
C
B
A
@