• ベストアンサー

String^の^自体が何を意味しているのか、わかりません。

String^ msg = "テスト"; は、 char msg[] = "テスト"; と同じ意味でしょうか? String^の^自体が何を意味しているのか、わかりません。 TurboCからC言語は殆ど使っていませんので、戸惑っています。 VS2005を覚えようとしているのですが、なかなか取っ付きにくいです。 意識改革できる参考書などご存知の方も教えてください。

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

  • ベストアンサー
  • sha-girl
  • ベストアンサー率52% (430/816)
回答No.4

簡単にいうと^(ハットマーク)は実体がヒープに確保されるという意味です。 他の方の指摘の通り、これはC++/CLIと呼ばれる言語でC++で.NET Frameworkを 利用するために拡張した言語です。 .NET Frameworkのクラスはガベージコレクションで管理されている為 C++のクラスとは別に管理する必要があります。その為 ^(ハットマーク)をつける事により区別しています。 ちなみにC++マネージ拡張とC++/CLIは違います。 2003以前の仕様をC++マネージ拡張と言い 2005以降のものをC++/CLIと言います。 System::Stringはスタックに置くことは出来ないので System::String^ msg; となります。 System::Drawing::Color等は スタックに置くこともヒープに置くことも可能です。 System::Drawing::Color^ col1 = gcnew System::Drawing::Color(); System::Drawing::Color col2; int test1 = col1->R; int test2 = col2.R; C++/CLIの参考書としては 中 博俊著 「実践 C++/CLI 極めるための基礎と実用テクニック」 がありますが、 まずC/C++を理解していることが前提になっていますので もしC/C++の理解に不安があるようなら先に勉強した方が良いでしょう。 有名な書籍だと「独習C」と「独習C++」があります。 前述の通りC++/CLIは.NET Frameworkを使うためのものですが .NET Frameworkを使いたいのであればC#の方が良いと思います。

その他の回答 (3)

  • zwi
  • ベストアンサー率56% (730/1282)
回答No.3

StringクラスってことはC++マネージ拡張かな? C++マネージ拡張は、.NETフレームワークにおけるC++の拡張仕様で、C++/CLIとも言います。 私もC++/CLIには詳しくないので、String^が何を意味するかは分かりません。 少なくともTurboCからC++/CLIは間を飛ばしすぎだと思います。 C言語が理解できているのなら、まずC++を勉強されてはいかがでしょうか?オブジェクト指向が分からないとVC++2005は使いこなせません。 その上で、WindowsAPIやMFCなどのWindowsアプリを書く勉強をされたほうが良いと思います。さらにその先でC++/CLIに行けばよろしいかと。 C++の推薦本としては、「明解C++」を推薦します。 http://www.amazon.co.jp/%E6%98%8E%E8%A7%A3-C-%E6%9F%B4%E7%94%B0-%E6%9C%9B%E6%B4%8B/dp/4797334819 ざっと、VC++の機能を参照できる本としては、「Visual C++.NET逆引き大全500の極意」なんかどうでしょうか? http://www.amazon.co.jp/Visual-NET%E9%80%86%E5%BC%95%E3%81%8D%E5%A4%A7%E5%85%A8500%E3%81%AE%E6%A5%B5%E6%84%8F-Windows-2000-NT%E5%AF%BE%E5%BF%9C/dp/4798010960/ref=sr_1_4/503-3751518-7060735?ie=UTF8&s=books&qid=1185932878&sr=1-4

  • jacta
  • ベストアンサー率26% (845/3158)
回答No.2

> String^ msg = "テスト"; > は、 > char msg[] = "テスト"; > と同じ意味でしょうか? 違います。 > String^の^自体が何を意味しているのか、わかりません。 > TurboCからC言語は殆ど使っていませんので、戸惑っています。 この構文はC言語のものではないので当然です。 C++/CLIについて調べてみるとよいでしょう。 名前こそ似ていますが、C++とC++/CLIは別の言語です。PL/IとPL/SQLほどは違わないという程度に考えてください。

参考URL:
http://vene.wankuma.com/ecma372/StartingState.aspx
  • ryopis
  • ベストアンサー率20% (49/238)
回答No.1

"^" が意味しているものはわかりませんが、 string msg = "テスト"; と、 char msg[] = "テスト"; は違います。

関連するQ&A