質問: お世話なっております string 型の変数 st のなかに "画像" という文字列が 含まれるか 検索するためのコードで コンパイルが 通りません ``` if (st.find("画像") != string::npos) { MessageBox(NULL, wStrC, "Yahoo", MB_OK); } if (st.find("image") != string::npos) { MessageBox(NULL, wStrC, "Yahoo", MB_OK); } ``` 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行は ともに } です
回答: 手元の 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 となりました。 こちらでしょうか?