質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

3回答

1316閲覧

【VC++】全角文字の検索のコンパイルエラー

Reach

総合スコア733

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2018/05/14 11:12

編集2018/05/14 12:24

お世話なっております

string 型の変数 st のなかに "画像" という文字列が 含まれるか 検索するためのコードで
コンパイルが 通りません

C++

1if (st.find("画像") != string::npos) { 2  MessageBox(NULL, wStrC, "Yahoo", MB_OK); 3} 4 5if (st.find("image") != string::npos) { 6  MessageBox(NULL, wStrC, "Yahoo", MB_OK);  7}

st には innerText の中身が 入っております

下のコードでは 問題ないのですが
上で コンパイルエラーが 発生します

全角文字では find が使用できないのでしょうか?

回答 よろしく お願い致します

Windows 7
VC++ 2017

【エラーメッセージ】

(137): error C2001: 定数が 2 行目に続いています。
(139): error C2059: 構文エラー: '}'
(140): error C2059: 構文エラー: '}'
(141): error C2059: 構文エラー: '}'
(138): error C2146: 構文エラー: ')' が、識別子 'MessageBoxA' の前に必要です。
(138): error C2146: 構文エラー: ';' が、識別子 'MessageBoxA' の前に必要です。
(138): error C2429: 言語機能 'if/switch の init-statements' にはコンパイラ フラグ '/std:c++latest' が必要です
(138): error C2143: 構文エラー: ')' が ';' の前にありません。
(139): error C2059: 構文エラー: ')'

137行は
if (st.find("image") != string::npos) {
です
140行と 141行は ともに

です

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

MessageBoxの前に全角スペースが入ってますが、これを半角スペースにすればどうなるでしょうか

投稿2018/05/14 12:33

y_waiwai

総合スコア87774

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

C++

1#include <iostream> 2#include <string> 3 4int main() { 5 using namespace std; 6 string st = "画像あるいはimage"; 7 8 if (st.find("画像") != string::npos) { 9 cout << "画像 みつけた" << endl; 10 } 11 12 if (st.find("image") != string::npos) { 13 cout << "image みつけた" << endl; 14 } 15} 16 17/* 実行結果 18画像 みつけた 19image みつけた 20*/

なんの問題もありませんねぇ...

投稿2018/05/14 12:31

episteme

総合スコア16614

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

手元の VS2017 コンパラでは、若干の手直しで OKでしたが?

手直し箇所: MessageBox() がコマンドラインからでは、NG

if (st.find("image") != string::npos) {if (st.find("画像") != string::npos) {

この行、 { 以降が間違いみたいなので、削除

テスト環境と、エラー内容を記載すれば、原因に近づけるかもしれません。
あと、定番だと、文字コードの問題あたりでしょうか?

[追記]
文字コードを UTF-8 にして、コマンドラインでコンパイルしたら、同様のエラーとなりました。

cl test.cpp

UTF-8 のオプションがあるらしいので、

cl /utf-8 test.cpp

としたら、OK となりました。

こちらでしょうか?

投稿2018/05/14 11:55

編集2018/05/14 13:27
pepperleaf

総合スコア6383

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Reach

2018/05/14 12:25

記載コードに 誤りがあり 訂正いたしました
Reach

2018/05/14 15:02

cpp ファイルの文字コードを 変更して 保存で コンパイル成功しました 無事、文字列検索ができました (ヒントを得て 自己解決?) ありがとうございました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問