アプリ版:「スタンプのみでお礼する」機能のリリースについて

vc.net2003にて,非MFC環境にてプログラミングしています.非MFCなのでTRACEが使えず,代わりに_PRTを使用してデバックウィンドウに変数の値を表示させているのですが,vectorにしたstringの値が表示されず困っています.
#include <vector>


vector<string> string1;
string1.push_back("Hellow");
_RPT1(_CRT_WARN, "string1: %s \n", string1);

というようなコードを書き,プログラムを実行するとアクセス違反が出て,うまくいきません.何が間違っているのでしょうか.教えていただけませんか.

A 回答 (3件)

_PRT1マクロが、


「CDのディスクを入れると、CDを再生してくれる装置」
だったとします。

_PRT1の装置に、「ケースに入ったCDを30枚入れたラック」を入れようとすると、当然入らない(コンパイルエラー)か、動作不良を起こす(アクセス違反)か、壊れ(ブルーバック、OSが落ちる)ます。

ラックから再生したいケースを取り出し、ケースからCDを取り出して装置に入れる必要があります。

--
string1の型→vector<string>
_PRT1の要求する型→const char* (?)

と、扱う型が違うのが原因です。
    • good
    • 0
この回答へのお礼

ありがとうございます.うまくいきました.

お礼日時:2006/06/07 12:53

vectorはコンテナですので、そのまま文字列としては扱えません。


コンテナのデータを一旦、文字列として出力する必要があります。

---
#include<vector>
string vec_to_str(vector<string>& vec)
{
string str;
for ( vector<string>::iterator i=vec.begin() ; vec.end()!=i ; ++i )
str += *i + " ";
return str;
}

vector<string>string1;

string1.push_back("Hellow");
_RPT1(_CRT_WARN,"string1:%s\n",vec_to_str(string1).c_str());
---
ちょっと手抜きですが、こんな感じで表示されるようになりませんか?
    • good
    • 0
この回答へのお礼

ご丁寧にありがとうございます.ばっちりうまくいきました.たすかりました.

お礼日時:2006/06/07 12:53

_RPT1(_CRT_WARN, "string1: %s \n", string1[0].c_str() );


でどうですか?
    • good
    • 0
この回答へのお礼

うまくいきました.二日ほど試行錯誤して自力解決できませんでした.c_str()は思いつきませんでした.ありがとうございました.

お礼日時:2006/06/07 12:56

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!