みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

String型をchar型配列にしたい

 VC++2005ExpressEdition + PlatformSDKを使用しています.

 String型をchar型配列に変換したいと思っています.

 自分なりに調べてみたのですが,

> String^ str = gcnew String("test");
> char chr[5];
> chr = str->ToCharArray();

などとしても次のようなエラーが出ます.

> error C2440: '=' : 'cli::array<Type,dimension> ^' から 'char [5]' に変換できません。

 String型からchar型配列への変換はどのようにすればいいのでしょうか.

投稿日時 - 2006-04-25 19:58:00

QNo.2113914

暇なときに回答ください

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

>gethostbyname でアドレスを返したい
Dns::GetHostByName スタティックメソッドを使えば良いです。
http://msdn2.microsoft.com/ja-jp/library/system.net.dns.gethostbyname.aspx

投稿日時 - 2006-04-26 09:04:58

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.2

ToCharArray は、Char (wchar_t[]) を返しますからダメですよね。
GetBytes を使うと、Byte (unsigned char[]) を返しますから
なんとかなるんじゃないでしょうか
一般的に、System::String は、ユニコードですからchar に変換する意味がよくわかりません。
どっちにしても、
char chr[5] に、
chr =
とはできないと思います。

投稿日時 - 2006-04-26 05:29:37

補足

 コメントありがとうございます.

 テキストボックスにはホスト名が入っていると仮定していて,そのホスト名に対して gethostbyname でアドレスを返したいと思っています(それを利用してソケットを使いたい,というのが目的です).

> struct hostent FAR * gethostbyname (const char FAR * name);

 なので,Stringをcharに変換できれば,と思っています.

投稿日時 - 2006-04-26 08:12:44

ANo.1

がると申します。
ちとWinodows系は不得手なので恐縮ではありますが。
UNIX系ですと、c_str()というメソッドを使って、ポインタの取得が出来ます。
ですので、例えば
string str = new string("test");
char chr[5];
memset(chr, '\0', sizeof(chr));
memcpy(chr, str.c_str(), str.size());
という方法がつかえます(charのサイズだのなんだのエラーチェック周り思いっきり割愛しまくってますが)。

投稿日時 - 2006-04-25 20:44:48

あなたにオススメの質問