アプリ版:「スタンプのみでお礼する」機能のリリースについて

現在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("それ以外");
}
****************************************************************

A 回答 (5件)

> プログラム通りにやってみたところ不正と判断しかされなくなってしまったのですが



という事なら外のifがfalse、つまりDateTime::TryParse()で失敗しているという事ですから、「ssの中身が時刻として認識できる文字列ではない」ってことになります。
    • good
    • 0
この回答へのお礼

わかりました。
ありがとうございます。

お礼日時:2009/01/22 17:09

System::Stringの文字列比較は「String.Compare()」を使う。



if (String.Compare(ss,"7:00")==0) {
は試したか?
    • good
    • 0
この回答へのお礼

まだです。
試してみます。ありがとうござました。

お礼日時:2009/01/22 17:16

C++/CLIでやるなら .NETFrameworkに用意されているクラスを使ってプログラミングするようにしましょう



今回は時間(時刻)を比較したいのですから DateTime型を使いましょう


String ^ss = textBox1->Lines[0];
DateTime dt;
// ssの内容が 時刻に変換可能かチェック
if ( DateTime::TryParse( ss, dt ) ) {
  // 変換できたのなら『7:00』かどうかをチェック
  if ( dt == DateTime::Parse("7:00") ) {
    MessageBox::Show("7時");
  } else {
    MessageBox::Show("それ以外");
  }
} else {
  // 変換できなかった場合
  MessageBox::Show("時刻として不正です");
}

# 行頭の字下げには全角文字の空白がありますので置換してください

この回答への補足

ご指摘ありがとうございます。
プログラム通りにやってみたところ不正と判断しかされなくなってしまったのですが、この場合は"7:00"というところが間違っているのでしょうか?

補足日時:2009/01/21 22:26
    • good
    • 0

 こんばんは。



 System::String^はchar*とは全くを以って性質の違う物です。

 if(ss == "7:00")

 で比較が出来ます。

 しかし、どうしてもと言うのであるならば、

 using namespace System::Runtime::InteropServices;

 //マーシャリングする
 IntPtr iptr = Marshal::StringToHGlobalAnsi(ss);
 if (strcmp(static_cast<const char*>(iptr.ToPointer()), "7:00")==0) {
    MessageBox::Show("7時");
 }
 else {
    MessageBox::Show("それ以外");
 }
 //割り当てられるので必ず開放する
 Marshal::FreeHGlobal(iptr);

 とする事も出来ます。

この回答への補足

ありがとうございます。
if(ss == "7:00")はもう試していたのですが出来ませんでした。
マーシャリングというものもエラーが出てしまいました。

補足日時:2009/01/21 22:31
    • good
    • 0

VC++の経験はないですが、C言語は使えます。


その上での回答ですが。

コンパイルエラーに出ている通りです。変数の型が合わないだけです。
変数の型についてもっと知りましょう。
    • good
    • 0
この回答へのお礼

わかりました。
ありがとうございます。

お礼日時:2009/01/22 17:10

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!