現在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件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
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"というところが間違っているのでしょうか?
No.2
- 回答日時:
こんばんは。
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")はもう試していたのですが出来ませんでした。
マーシャリングというものもエラーが出てしまいました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(Microsoft Office) マクロVBAについて 1 2022/09/06 18:12
- Excel(エクセル) VBAで組み合わせ算出やCOUNTIFSの処理を高速化したいです。 4 2022/04/07 02:38
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- Excel(エクセル) エクセルのVBAについて とあるサイトのコードを参考に、CSVの文字化けを直すVBAを作成しているの 7 2022/11/04 14:15
- Excel(エクセル) エクセル VBA For Next 繰り返しの書き方を教えてください 6 2022/09/01 14:11
- Visual Basic(VBA) Excel VBAでAA(BBB) → BBB.AA に置換したい 2 2022/10/30 13:59
- その他(コンピューター・テクノロジー) ffmpeg 動画から複数の箇所を指定して、一度の作業で同時に切り出したい 1 2022/07/03 08:35
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- アプリ Android studio 初心者 Hello Android!しか表示されない 1 2023/08/01 08:47
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
緯度、経度の 10進法と 60進法...
-
Excel-VBAのmsgBox()の不思議
-
【EXCEL】カナ、ひらがなを英字...
-
3のつく数字と3の倍数のみを表...
-
C/C++→JAVAに変換するツール
-
文字コードの変換
-
VC++2005で、CString型に16進...
-
英数文字列のうちの数値を4桁に...
-
マンセル⇔XYZ,RGB変換式或いは...
-
Editboxのアスタリスク変換
-
Mac 乗数の入力方法
-
GetDlgItemInt( ) c++
-
c++でmatからvectorへの変換の...
-
魚眼レンズの画像処理
-
VB6から.NETへアップグレード時...
-
機械語とアセンブリ言語の違い...
-
n次元の正規直交基底ベクトルの...
-
非接触回転速度センサ OH1...
-
VB 6 を VS 2012に変換するには?
-
シフトJISのCSVファイルをUFT-8...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
緯度、経度の 10進法と 60進法...
-
Excel-VBAのmsgBox()の不思議
-
Mac 乗数の入力方法
-
家電製品の電力周波数を変える機械
-
3のつく数字と3の倍数のみを表...
-
bmp→jpgに、jpg→bmpに
-
10進数をBCDに変換する方法
-
【EXCEL】カナ、ひらがなを英字...
-
StrConvの使い方について教えて...
-
分を時間に変換するプログラム
-
画像ファイル変換(Tiff→PDF)
-
マンセル⇔XYZ,RGB変換式或いは...
-
C/C++→JAVAに変換するツール
-
VB6からVB2010への変換について
-
c++でmatからvectorへの変換の...
-
DOSコマンドでの文字コード変換...
-
VB.NETをJavaに変換するツール...
-
SJIS⇔UTF-8の文字コード...
-
なぜ通信には16進数文字列が使...
-
C#でのpngからbmpへの変換について
おすすめ情報