char型配列をString型に変換する方法

このQ&Aのポイント
  • VC++2005ExpressEdition + PlatformSDKを使用しています。char型配列をString型に変換する方法を知りたいです。int型の場合はString::Format関数を使用して変換できますが、char型の場合はエラーが出ます。
  • アドレス(*1)の回答によると、char型の配列をString型に変換する方法が記載されていますが、実行時エラーが発生しています。
  • char型配列をString型に変換する方法を教えてください。
回答を見る
  • ベストアンサー

char型配列をString型にしたい

 VC++2005ExpressEdition + PlatformSDKを使用しています.  char型配列をString型にしたいと思っています(MessageBoxで表示するため).  int型ならば, > String^ out = String::Format("{0}", i ); > MessageBox::Show(out); などとできます.  下のアドレス(*1)のNo.2の答えにあるように > char ss[256]; > String^ out; > out=ss; とすると > error C2440: '=' : 'char [128]' から 'System::String ^' に変換できません。 なるエラーが出ます(S を大文字にしたりハットを付けたりしています).  char型の配列のString型への変換はどのようにすればいいのでしょうか. (*1)http://oshiete1.goo.ne.jp/kotaeru.php3?q=479640

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

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.3

試してないですが、 String^ out = gcnew String(ss); でいけませんか

magicoflove
質問者

お礼

 完璧に動作しました.どうもありがとうございました.

その他の回答 (2)

  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.2

試さないで書いてますが、 .Net Frameworkのヘルプによると、char*からのコンストラクタをもってるみたいだから、 char s[] = "test"; String out( ss ); ――みたいのでいけるのでは。

参考URL:
http://msdn2.microsoft.com/ja-jp/library/6y4za026(VS.80).aspx
回答No.1

>質問:char型配列をString型にしたい リンク先みましたがC++ですよね String型なんてありません string 小文字です 文字列はあります そして String^ はなんでしょうか

関連する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型配列への変換はどのようにすればいいのでしょうか.

  • String型からChar配列への変換は可能?

    String型から例えばcharの配列に変換するという事はできるでしょうか String str="OKwave"だとすると char c[]={'O','K','w','a'.'v','e'}; というような感じにしたいのですが、流石に不可能でしょうか。 もし出来ないなら、代替方法とか教えていただけるとありがたいです。 とりあえず、文字を一つ一つに分けたいのです・・・ Javaはまだ初心者で、質問内容も初歩的なものだと思いますが、よろしくおねがいします。

    • ベストアンサー
    • Java
  • Stringの2次元配列からint型に変換

    おはようございます。 Stringの2次元配列からint型に変換できますか? 配列からの変換はString→int型の変換とは違いますか? ご教授ください。 よろしくお願いいたします。

  • VC++2005 型についてのエラー

    現在VC++2005でプログラムを作成しています。 そこでテキストファイルに書かれて保存されているものをテキストボックスに表示するというものを作っています。 そして今は、ssという変数にその表示されているものを代入してあります。そこでそのssというものと7:00とテキストファイルに書かれているものを比べてみたいと考えています。 そこでstrcmpで比べてif文を作りたいのですが、下に書いたエラーで変換できませんと出てしまいます。 このような場合はどのように修正すればよいのでしょうか? 基本的な質問かもしれませんがよろしくお願いします。 「'strcmp' : 1 番目の引数を 'System::String ^' から 'const char *' に変換できません。(新しい機能 ; ヘルプを参照)」 **************************************************************** String^ ss; ss=textBox2->Lines[0]; textBox4->Text=ss; if (strcmp(ss, "7:00")==0) { MessageBox::Show("7時"); } else { MessageBox::Show("それ以外"); } ****************************************************************

  • int型とchar型について

    C言語初心者です。 よろしくお願いします。 ◎1----------------------- #include<stdio.h> int main(void) { int ss[4]="789"; printf("%c\n",ss[0]); return 0; } --------------------------- ◎2----------------------- #include<stdio.h> int main(void) { int *p; p="789"; printf("%c\n",*p); return 0; } --------------------------- ◎1、◎2の2つのプログラムについて疑問があります。 ◎1の「int ss[4]="789";」と◎2の「int *p;」のintの部分は今まで、何の疑問も抱かず、「char」として入力していました。 そこでchar型は1バイトの整数、int型は4バイトの整数ということで容量が違うだけで、intとしても大丈夫だろうと思ったのですが、 ◎1では、「'initializing' : 'char [4]' から 'int [4]' に変換することはできません。」とエラーが出て、◎2では「'char [4]' から 'int *' に変換することはできません。」とエラーが出ます。 intは文字列は扱えないということなのでしょうか? 以上intだと実行できない理由がわかりません。 初歩的なことですいませんが、教えていただけると嬉しいです。

  • 配列について

    初歩的な質問ですいませんが、質問よろしくお願いします。 ◎1----------------------------- #include<stdio.h> int main(void) { char ss[10]="AB"; printf("ss=%s\n",ss); return 0; } ------------------------------------ ◎2-------------------------------- #include<stdio.h> int main(void) { char ss[10]; ss[0]='A'; ss[1]='B'; ss[2]=0; printf("ss=%s\n",ss); return 0; } ----------------------------------- ◎3------------------------------- #include<stdio.h> #include<string.h> int main(void) { char ss[10]; strcpy(ss,"AB"); printf("ss=%s\n",ss); return 0; } ----------------------------------- ◎4------------------------------- #include<stdio.h> int main(void) { char ss[10]; ss="AB"; printf("ss=%s\n",ss); return 0; } ---------------------------------- 以上4つのプログラムで、◎2と◎3は正常に動くと理解できたのですが、何故、◎1は正常に動き、◎4は「'const char [3]' から 'char [10]' に変換できません。」といったようなエラーが出てしまうか分かりません。 教えていただければ嬉しいです。

  • String型とchar型の変換エラーです

    今晩は!またまたこの掲示板にきました。よろしくお願いします。 文字列かブランクを取り出すコードを書きましたが、 -------- char ch_check = str.charAt(i+1) ; if(ch_check ==" ") { --------- のところでString型とchar型の混合は受け入れられませんのようなエラーが出ました。 if(ch_check ==" "をboolean型でうけるのも拒否されました。 どこをどのようにしてやればよいでしょうか。 JAVA初心者です、特に文字列の取り扱いは評判通りわかり難くくないています。 よろしくお願いします。 ---------- public class Mojiretu_Blank { public static void main(String[] args) { String str = "This is a pen."; int i = 1 ; int blank_count = 0 ; while( i < (str.length()+1) ) { char ch_check = str.charAt(i+1) ; if(ch_check ==" ") { blank_count ++ ; System.out.println(ch_check); } else{} System.out.print("ブランクの数は" + blank_count + "個です。"); } } }

    • ベストアンサー
    • Java
  • unsigned char SJis[2]からstd::stringに変換

    開発環境は VC++ 2008 Express Edition あるDLLの関数で戻り値としてShiftJISの1文字が格納された unsigned char SJis[2] が返され,これを呼び出し側のプログラムで使っている文字列 std::string str に順に追加していこうと思っています. そこで, unsigned char tmpSJis[3]; tmpSJis[0] = SJis[0]; tmpSJis[1] = SJis[1]; tmpSJis[2] = '\0'; str += std::string(tmpCode); というコードを書いてループさせたのですが, error C2440: '<function-style-cast>' : 'unsigned char *' から 'std::string' に変換できません。 というエラーが出てしまいうまく変換できません. これを解決する方法はありませんか?

  • VBのString型の配列をVCで受け取るには?

    VBでString型の配列として定義されている変数を VCのプログラムで受け取るにはどうすればよいのでしょうか? 試しにVBでString型の配列を作って DLLのC_TESTというファンクションを呼び出すという 処理を作ってみたのですが、コンパイルエラーになってしまいます。 なにかおかしいところありますか? そもそもVCにはString型ってないんですよね? プログラミング初心者ですので、変な言葉遣いに なってるかもしれませんが宜しくお願いします。 VB Declare Function C_TEST Lib "\test.dll" (ByVal data() As String) As Integer Dim A(1) As String dim rtn as Integer A(0)="あああ" A(1)="いいい" rtn= C_TEST(A) VCのプログラム int _stdcall C_TEST(LPSTR A[2] ){ AfxMessageBox( A[0] ); return(0); }

  • mapの引数としてstring型を用いたい

    言語はVisual C++ 2005、OSはXPを用いています。 <map>、<string>、<iostream>をincludeした上で、 Formを用意しボタンをクリックすると 以下のプログラムが動くようにすると、 これはうまくいきます。 (メッセージボックスに187と表示される。) map <int,int> mapTest; mapTest[10]=187; MessageBox::Show((mapTest[10]).ToString()); ところが、引数をString型に変えて、 以下のようにすると、 map <String^,int> mapTest; mapTest["qwe"]=187; MessageBox::Show((mapTest["qwe"]).ToString()); コンパイルエラー「マネージ'first'をアンマネージ'std::pair<_Ty1,_Ty2>'で宣言できません。」 となってしまいます。 どのように修正したらよいでしょうか?

専門家に質問してみよう