ここから本文です

C++(MFC) CStringArrayをCStringの配列に変換したい。

abr********さん

2012/11/810:03:26

C++(MFC) CStringArrayをCStringの配列に変換したい。

■やりたいこと
1.モジュールXから文字列(CString)を複数回取得します。
2.渡される回数は不定で、あらかじめ知ることはできません。
3.溜めておいた複数の文字列を(CString *)型でモジュールYに渡します。

■CStringArrayを使えば、動的に配列を確保できるのですが、
最終的に(CString *)に変換するのが面倒です。
簡単に変換できる方法が用意されていれば、それを利用したいです。

CStringArray buf;
while(x.HasMoreValue()) {
buf.Add(x.GetString());
}
CString* strArray = buf.【CStringArrayを(CString *)に変換したい】
y.PutString(strArray);

■その他、もっとスマートな方法があればお願いします。

補足質問の意図が分かりにくいかもしれませんが、
文字列の配列(CStringArray)を
文字列の配列(普通のC言語で言うところの配列 CString[] )に
変換したいのです。

もしくは、あらかじめ数のわからない状態で、CString[] を
作成する方法を探しています。

モジュールYに手を加えることはできないので
PutString(CString *);を
PutString(CStringArray);に変更するというのは無理です。

閲覧数:
6,674
回答数:
2
お礼:
500枚

違反報告

ベストアンサーに選ばれた回答

プロフィール画像

カテゴリマスター

n2q********さん

編集あり2012/11/817:02:50

次のようにしてください。

y.PutString(&buf[0]);

あまりに簡単なので驚かれたかも。表記があっさりしすぎて、間違いと混同されるおそれすらあります。なので、次のようにしておくのも良いと思います。

y.PutString(&buf.ElementAt(0));

この回答は投票によってベストアンサーに選ばれました!

ベストアンサー以外の回答

1〜1件/1件中

lun********さん

編集あり2012/11/819:06:37

回答の趣旨が間違っているかも知れませんが...

void PutString( CString *str )
{
printf( "Test String 本命 %s\n", *str );
// これを含むクラスの中で,StringArrayかなんかで,管理している
}

void PutStrings( CString str[], int size )
{
for ( int pos = 0; pos < size; pos++ )
{
printf( "Test String %s\n", str[pos] );
}
}

int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
CStringArray arry;
CString str[3];
str[0] = "123";
str[1] = "ABC";
str[2] = "いろは";

printf( "Test\n" );
for ( int pos = 0; pos < 3; pos++ )
{
arry.Add( str[pos] );
printf( "Test %s\n", str[pos] );
}

PutStrings( str, arry.GetSize() );
//じつはやっぱりこれじゃ無いの
PutString( &str[2] );

getchar();
return 0;
}

CStringArray は,CStringの配列のクラスです.
C#やJavaは,未知の配列を簡単に作れますが,C/C++は,どうなんでしょうか?
でもCStringArrayクラスなら大丈夫かも...

追記:
意味は,上記のようなもので,Stringの配列のアドレスをを渡したいのですね?
でも,PutStringsでは,この配列のサイズがわからないので,処理できないのでは?

ならば,推理して,PutString() では,文字列の配列を渡しているのではなく,単に
文字列を渡しているのでは...
この中で,登録された文字列をStringArrayかなんかで,蓄積し,
CString *GetString( int index )かなんかで,文字列1個を取り出しているのでは?

C,C++では,配列を渡しても,この配列内の有効データ数はわかりませんよね...

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる