• ベストアンサー

MFCを使って、ひとつのkey(CString)から複数要素(CString)をとりだせるようなプログラムを書きたいのですが・・・。

私は現在visual C++6.0を使用して MFCをちょこちょこ使いながらC++でプログラムを書いています。 皆さんご存知かとは思いますが CMapStringToStringを使うと一つのKeyからひとつの要素しかとりだせません。 ひとつのKeyに対していくつか要素を追加していけるようにしたいのです。 どなたかご存知の方がいらっしゃったら教えて頂けないでしょうか?

  • youhi
  • お礼率83% (20/24)

質問者が選んだベストアンサー

  • ベストアンサー
  • mkii
  • ベストアンサー率40% (43/105)
回答No.3

適当に作ってみました。 CMapStringToOb SAMap(3); CStringArray *pVal; pVal = new CStringArray(); pVal->SetSize(2); (*pVal)[0] = "田中 太郎"; (*pVal)[1] = "田中 花子"; SAMap.SetAt("TANAKA", pVal); // 要素を追加 pVal = new CStringArray(); pVal->SetSize(2); (*pVal)[0] = "山田 太郎"; (*pVal)[1] = "山田 花子"; SAMap.SetAt("YAMADA", pVal); // 要素を追加 pVal = new CStringArray(); pVal->SetSize(2); (*pVal)[0] = "佐藤 太郎"; (*pVal)[1] = "佐藤 花子"; SAMap.SetAt("SATOU", pVal); // 要素を追加 CStringArray *pMapVal; // 値を獲得 BOOL b = SAMap.Lookup("YAMADA", ( CObject *&)pMapVal); printf("%s\n",(LPCSTR)pMapVal->GetAt(0)); printf("%s\n",(LPCSTR)pMapVal->GetAt(1));

youhi
質問者

お礼

ありがとうございます! とてもわかりやすいです! 参考にさせていただきます。 お手数おかけして申し訳ありあませんでした

その他の回答 (2)

  • alfeim
  • ベストアンサー率58% (114/195)
回答No.2

STLのstd::multimap<key, container>とstd::multimap<key, container>::equal_range()メソッドで御所望の動作が出来ます

youhi
質問者

お礼

ご回答ありがとうございます。 検討してみます。

  • mkii
  • ベストアンサー率40% (43/105)
回答No.1

CMapStringToObとCStringListの組み合わせが 一番質問と近くて簡単ではないでしょうか。

youhi
質問者

お礼

すばやいご回答ありがとうございます。 なんだかピッタリっぽそうです。 検討してみます。

youhi
質問者

補足

すいません。 MSDNライブラリを見て検討してみた結果 CStringToObを使ってみようと思い CStringをキーとして CObject*がCStringArrayをさすようなものを作ろうと思ったのですが どのように書いてよいのか、わかりませんでした。 そこで申し訳ないのですが サンプルになるプログラムを紹介していただけないでしょうか?

関連するQ&A

  • MFCの参考書を探しています

    現在、Visual C++のMFCを勉強しています。(開発環境はVisual Studio2008) 参考にしているのは「標準講座MFC6.0」と「スタンダードVisual C++」という本です。 ただどちらの本にもドキュメント・ビュー・アーキテクチャを使用したサンプルプログラムが少なく、またその詳細についてはあまり触れられていませんでした。 やはりMFCで開発をするにはその辺を知っておくべきと思いますので、上記についての詳細やサンプルプログラムを多く載せた参考文献・サイト等ありましたら教えてください。 話は少しズレますが、MFCに関する本やサイトって少ないですよね。MFCは今後、廃れていくのでしょうか?今後のWindowsの開発は.NET系の開発言語に移っていくのでしょうか? どちらか片方に対するご意見・ご回答で構いませんので、よろしくお願いします。

  • コンソールアプリケーションからWindowsプログラムへの道順

    私は現在Visual C++ .NET 2003のスタンダードを使用して、Win32コンソールアプリケーションでプログラムを作成しています。まだまだ経験が浅いのでエラーの連続ですが、ポインタの使用や構造体の使用、クラスの使用や低水準ファイル入出力を利用して、テキストファイルの読み込み・整形・書き込みをするプログラムを作成しています。 そろそろSDKやMFCなどを学びたいと考えているのですが、書籍などでSDKを覚えてからMFCを学んだほうが良いみたいなことが書かれていました。でも、別の書籍ではいきなりMFCでも問題ないみたいなことも書いてありました。現在コンソールアプリケーションを作る私がSDKやMFCを学ぶために道順が良く分からなくなっています。 そこで現在Windowsプログラミングをされている方にお聞きしたいことがあります。質問は次のとおりです。 1、MFCを学ぶなら先にSDKを覚えてからのほうが良いですか? 2、Visual C++ .NET 2003を使用してSDKまたはMFCを学ぶのに、お勧めの書籍があったら教えてください。 3、絶版になっていない書籍を探すとVisual C++ .NET 2005を使用しているものが目立つように思えるのですが、私の所有しているバージョンを2005にしてから書籍を考えたほうが良いと思いますか? お時間がありましたら皆さんのご経験をお聞かせください。よろしくお願いいたします。

  • MFC

    Visual StudioのMFC(Microsoft Foundation Class)に関して質問があります。 私は今Visual Studio 2010 Express editionを使用しているのですが、新規作成から共通ヘッダファイルを追加でMFCを追加できません。 これは無料版ではMFCは使えないということでしょうか? また、有料版ではどれでもMFCは使用可能でしょうか? 特に私は今学生ですのでアカデミック版ではどうでしょうか?

  • 指定した属性値を持つ要素に追加する方法

    質問させてもらいます。 Visual C#を使ってXMLファイルに対して 読み書きを行うプログラムを作っています。 同じ要素名で違う属性値を持つ要素が複数ある場合、 その中の特定の要素の属性値を指定し、それに追加する 方法がわかりません。 実現方法や参考になるサイト等教えてください。 開発環境は下記です。 WindowsXP Visual Studio 2005

    • 締切済み
    • XML
  • MFCのアクセラレータ

    現在、MFCでドローソフトを作成しております。 Viewに複数の要素を配置している状態で Ctrlキー + Aボタン 同時押しで 全ての要素を選択状態にしたいと考えております。 リソースのアクセラレータにCtrlキー + Aボタンを登録した後、 どこに該当するプログラムを書くのか分かりません。 詳しい方がいたら教えて下さい。 どうぞ宜しくお願い致します。

  • 途中からMFCを使用したい

    はじめて質問させていただきますVisual C++初心者です。 現在Visual C++ 6.0で開発作業を行っていますが大変困っています。 前任者が「MFCを使用しない」でプロジェクトを作成していたのですが、前任者の退職により本作業を引き継ぐことになりました。 ほとんどAPIのみで作成されたいましたが、MFCを使用したいと考え、プロジェクト設定から「共通DLLでMFCを使用」にしたところ、リンカエラー(LNK2001)が続出しました。(恐らくAPI使用分だけ出ているのだと思います。) このように途中からMFCを使用する場合、簡単に設定変更できるものなのでしょうか。やはり、MFC使用でプロジェクトを作り直してからコードを移植していったほうが早いのでしょうか。 諸先輩方のご意見を参考にさせてください。宜しくお願い致します。

  • VC++ExpressEdition2005でのMFC利用

    Visual Stdio Express Edition 2005 C++のMFCに関して質問させてください。 とあるプロジェクトをコンパイルしますと, "AFXWIN.H":No such file or directoryとのエラーが出ます。 調べて見たところ,AFXWIN.hはMFCだと言う記述を目にしました。 そして公式サイトの記述によりますと, >MFCとATLはVisual C++ 2005 Express Editionには含まれません。MFCとATLは、その他のすべてのVisual Studio2005エディションに含まれる予定です。 なのだそうです。 ですので,MFCを含むプログラムをこのソフトでやるのは無理かな? と思ったのですが,PSDKをインストールすればExpressEditionでも出来る, という事も聞きました。 結局真実がどうなのかがわからなくなってしまいました。 Visual C++ 2005 Express EditionではMFCは使えるのかどうか? またもしExpressEditionで使えないのならば,どれなら使えるのか?(Standard?Professional?) ご存知の方いらっしゃいましたらご鞭撻どうぞ宜しくお願いいたします。

  • MFCアプリケーションについて

    MFCアプリケーションを使用してプログラミングをしようと思うのですが、プロジェクト作成欄にMFCアプリケーションがありません。 使用している環境は OS : Windows XP C++ : Microsoft Visual C++ 2005 Express Edition です。 サポートされていないのでしょうか? MFCアプリケーションを使う方法を教えてください。

  • MFCに関する質問

    C++言語でMFCでアプリケーションを作りたいのですが MFCというのは、やはり、Visual C++を購入しないと MFCは手に入りないのでしょうか それか、どこかで、MFCをダウンロードできるのでしょうか

  • gdiplus.dllを使わないプログラム開発

    はじめまして、 ”Microsoft Visual C++ 2008”にてダイアログベースのプログラムを書いています。 windows2000に対応するために、gdiplus.dllを使用しないプログラムを作成したいのですが、 新規作成したプロジェクトをそのままビルドしただけでもgdiplus.dllが読込まれてしまいます。 読込まなくするには、どのように設定を行なえばよいのでしょうか。 それとも”Visual C++ 2008”ではgdiplus.dllを使用しないダイアログベースのプログラム開発は不可能なのでしょうか。 動作対象OS:win2000(SPなし)以降 開発環境: 言語:Visual C++ 2008(visual studio 2008 professional edition) テンプレート:MFCアプリケーション アプリケーションの種類:ダイアログベース 以上、よろしくお願いいたします。

専門家に質問してみよう