C++/CLIのフォームアプリケーションについて質問です。
コンパイラはVisual Stdio2008です。
C++/CLI歴1日です。
作りたいプログラムは、簡単に言えばウインドウズ標準アプリの電卓です。
テキストボックスtextBox1に、関数Aで以下のように文字列をセットします。
textBox1->AppendText("1");
次に、textBox1のString型文字列"1"を、char型に変換したいと思って、下記のように書いています。
char cTmp[10];
cTmp = textBox1->Text->c_str();
ちなみに、char型に変換したい理由は、この後にatoiしてint型に変換したいためです。
すると、以下のようにエラーメッセージが出ます。
>error C2039: 'c_str' : 'System::String' のメンバではありません。
1>c:\windows\microsoft.net\framework\v2.0.50727\mscorlib.dll : 'System::String' の宣言を確認してください。
c_strはメンバ関数ではないのでしょうか?
そう思った理由は↓のサイトを参考にしています。
http://www.geocities.jp/ky_webid/cpp/library/001.html
ご回答お願いします。
【C++/CLI】c_strはStringのメンバで無いのかどうか
Re: 【C++/CLI】c_strはStringのメンバで無いのかどうか
c_str はC++標準ライブラリの std::string のメンバ関数です。
C++/CLI の String は.net Framework の System::String なので別のクラスです。
http://msdn.microsoft.com/ja-jp/library ... tring.aspx
C++/CLI の String は.net Framework の System::String なので別のクラスです。
http://msdn.microsoft.com/ja-jp/library ... tring.aspx
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: 【C++/CLI】c_strはStringのメンバで無いのかどうか
いきなり話をへし折るみたいで悪いのですが、今後スタンダードに成るとは思えないC++/CLIでGUIを作ることを勉強するのはあまり良いこととは思えません。
どうしても必要な場合をのぞいてC#などを使われたほうが良いと思います。
ちなみにC++/CLIのCLR WindowsフォームアプリケーションはVisualStudio2012以降から新規作成のテンプレートから無くなっています。マイクロソフトとしてはメンテ以外はやめて欲しいのでしょう。
どうしても必要な場合をのぞいてC#などを使われたほうが良いと思います。
ちなみにC++/CLIのCLR WindowsフォームアプリケーションはVisualStudio2012以降から新規作成のテンプレートから無くなっています。マイクロソフトとしてはメンテ以外はやめて欲しいのでしょう。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
-
わうわう
Re: 【C++/CLI】c_strはStringのメンバで無いのかどうか
返信ありがとうございます。
Stringとstringは別物だったのですね。全て解決しました。
>soft屋さん
同じような事を上司が呟いてました。
しかし少し前に納品した既設のシステムはC++/CLIで書かれており、それの障害対応の工番が発生しまして、
その為に急遽勉強しろという流れで学習しております(汗)。
新規作成のテンプレートから削除とは知りませんでした。
ちなみに、C++/CLIとVBも使っているシステムです。新たに作り直せばいいのにこのシステム…。
ご回答ありがとうございました。
Stringとstringは別物だったのですね。全て解決しました。
>soft屋さん
同じような事を上司が呟いてました。
しかし少し前に納品した既設のシステムはC++/CLIで書かれており、それの障害対応の工番が発生しまして、
その為に急遽勉強しろという流れで学習しております(汗)。
新規作成のテンプレートから削除とは知りませんでした。
ちなみに、C++/CLIとVBも使っているシステムです。新たに作り直せばいいのにこのシステム…。
ご回答ありがとうございました。