C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[7]: vectorのiteratorについて


(過去ログ 55 を表示中)

[トピック内 9 記事 (1 - 9 表示)]  << 0 >>

■30849 / inTopicNo.1)  vectorのiteratorについて
  
□投稿者/ 凪 (3回)-(2009/01/08(Thu) 11:54:27)

分類:[C/C++] 

WinXP
VC++2003

初心者です。只今VCの勉強をしています。

イテレータについて質問させてください。

ベクターを使って文字を扱う場合、イテレータでどう表示したらいいかわからず詰まっています。
例:
vector<char*> a;

char AA[5] = "ABCDE";
char BB[5] = "FGHIJ";
char CC[5] = "KLMNO";
char DD[5] = "PQRST";

a.push_back(AA);
a.push_back(BB);
a.push_back(CC);
a.push_back(DD);

vector<char*>::iterator x;

for(x = a.begin(); x != a.end(); x++)
{
cout << ここに何と書けばいいのでしょう?;
<< endl;
}

期待する結果:ABCDEFGHIJKLMNOPQRST

普通に
cout << x;
とするとエラーになってしまいます。

以上、宜しくお願いします。
引用返信 編集キー/
■30850 / inTopicNo.2)  Re[1]: vectorのiteratorについて
□投稿者/ επιστημη (1489回)-(2009/01/08(Thu) 12:00:06)
επιστημη さんの Web サイト
> char AA[5] = "ABCDE";
> char BB[5] = "FGHIJ";
> char CC[5] = "KLMNO";
> char DD[5] = "PQRST";

[5]じゃ足りない。少なくとも [6]。

>  cout << ここに何と書けばいいのでしょう?;

   cout << *x

引用返信 編集キー/
■30853 / inTopicNo.3)  Re[2]: vectorのiteratorについて
□投稿者/ 凪 (4回)-(2009/01/08(Thu) 12:49:13)
No30850 (επιστημη さん) に返信

ご回答有難うございます。

早速試してみます。

失礼しました。
5ではなく6ですね。
この一文字多い分っていうのは改行かなにかでしょうか?
引用返信 編集キー/
■30854 / inTopicNo.4)  Re[3]: vectorのiteratorについて
□投稿者/ たくボン (134回)-(2009/01/08(Thu) 12:51:41)
No30853 (凪 さん) に返信
> ■No30850 (επιστημη さん) に返信
> この一文字多い分っていうのは改行かなにかでしょうか?
null
引用返信 編集キー/
■30855 / inTopicNo.5)  Re[4]: vectorのiteratorについて
□投稿者/ επιστημη (1490回)-(2009/01/08(Thu) 12:56:32)
επιστημη さんの Web サイト
>>この一文字多い分っていうのは改行かなにかでしょうか?
> null

nullと書くとポインタみたい。
正しくは文字列の終端記号 '\0'

引用返信 編集キー/
■30856 / inTopicNo.6)  Re[4]: vectorのiteratorについて
□投稿者/ やじゅ (903回)-(2009/01/08(Thu) 12:56:58)
やじゅ さんの Web サイト
>>この一文字多い分っていうのは改行かなにかでしょうか?
> null

補足情報として、下記サイトを読むと理解できるかな

Cの文字列 最後に「0」を置いた特殊な配列
http://www.grapecity.com/japan/devclub/Consultants/clang/023/page01.htm
引用返信 編集キー/
■30857 / inTopicNo.7)  Re[5]: vectorのiteratorについて
□投稿者/ 774RR (276回)-(2009/01/08(Thu) 13:05:39)
俺としては vector<char*> に非常に違和感/危険な臭いを感じるのだが。
vector<char*> と vector<string> の違いをきっちり理解できているのだろうか?

vector<char*> a;
{
  char AA[]="ABCDE";
  a.push_back(AA);
}
cout << a[0];
とするとどうなるのかわかっているのかなー?とか余計な危惧しているのであった。

引用返信 編集キー/
■30858 / inTopicNo.8)  Re[6]: vectorのiteratorについて
□投稿者/ επιστημη (1491回)-(2009/01/08(Thu) 13:26:37)
επιστημη さんの Web サイト
> 俺としては vector<char*> に非常に違和感/危険な臭いを感じるのだが。

うんうん。

(Cじゃなくて)C++を勉強してるのなら、文字列についてはstring使ってて
もらった方が悩み事が少なくて楽かもです。

ポインタ/配列のお勉強は必要だけど、文字列とは切り離した方がいいのかなー、と。

引用返信 編集キー/
■30867 / inTopicNo.9)  Re[7]: vectorのiteratorについて
□投稿者/ 凪 (5回)-(2009/01/08(Thu) 14:45:24)
皆様

ご回答いただき有難うございます。

やはり勉強不足は危険ですね…
今、最初から勉強し直しています^^;

stringは便利だと思いますが、stringしか知らないと文字数の最大値とか考えると結構危険な気がするのですが…

文字列の扱いだけでこんなに大変だとは…
その点だけで言えば本当にVBは楽だなぁ

vector<char*>を使わずに文字列を扱うとすると
vector<char>ならいけるのかな?と思って試しました。

vector<char> a;

a.push_back("A");
a.push_back("B");
a.push_back("C");

vector<char>::iterator x;
for(x = a.begin(); x != a.end(); x++)
cout *x;

これなら回りました。
…と思いきや。

ちょっと脱線しそうなので別で質問立てさせていただきますm(__)m

とりあえず皆様、有難うございました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -