2017-03-05 7 views
0

私のプログラムにはC++を使用しています。私はGet the last element of a std::stringを読んだが、どれも助けなかった。私のコードは次のとおりです。ここで C++で文字列の最後の文字を取得するには

#include <iostream> 
    #include <string> 

    using namespace std; 

    int main() 
    { 
     string str = "Hello World!"; 
     char endch = str.back(); 
     if (endch == "!") // Here's the error 
     { 
      cout << "Found!" << endl; 
     } else 
     { 
      ; // ; alone does nothing 
     } 
    } 

Cエラーです:Users \ユーザー\ ... \デスクトップ\のmain.cppに| 30 |警告:不定動作に文字列リテラル結果との比較[-Waddress] |

C:\ Users \ユーザー... \デスクトップ\のmain.cppに| 30 |エラー:ISO C++は、私は問題が何であるかわからないんだけど

[-fpermissive]ポインタと整数との間の比較を禁止しますが、私はそれがstr.back;だと思っています。問題が何であるか分かっているなら、助けてください!

答えて

4

charを文字列リテラルと比較するためです。あなたはendchに文字を取得

if (endch == '!') 

"!" // <--- is a string literal. 
'!' // <--- it is a character. 
1

ので試してみてください。文字リテラルではなく、文字リテラルと比較してください。

if (endch == '!') 
3

endchはcharです。一方、"!"は文字配列です。したがって==は適用されません。

"!"の代わりに'!'を使用してください。

関連する問題