0

コードのコンパイル中にエラーが発生しました。

エラー出力:

main.cpp: 35:16: エラー: スイッチ数が整数ではありません

どうしてか分かりません。コードは次のとおりです。

int Values(string letter) {
    switch( tolower(letter) ) {
        case 'a' : a.setTotal();
        break;

よろしく

4

4 に答える 4

4

Astringは ではなく、char文字の配列を表すオブジェクトです。stringその関数に a を渡す代わりに、 aを渡す必要がありcharます。

tolower(int)C++ に存在し、文字列ではなく文字を取ることを意図していました。


これを修正する別の方法を次に示します。コードの変更が少なくて済みます。

名前から判断すると が長すぎるletterと確信しているので、ステートメントを accessに変更できます。これは の最初の文字になります。にも渡す必要があります。string1switchletter[0]stringletter[0]tolower

于 2013-03-28T19:51:07.577 に答える
2

letterは文字列なのでtolower(letter)、文字列を生成します。しかし、あなたのケースは文字 ('a') です。さらに、C/C++ では文字列にスイッチを使用することはできません。代わりに次の行を使用します。

switch( tolower(letter.data[0]) )
于 2013-03-28T19:54:31.063 に答える
0

スイッチの記述は、列挙型 (enum)、chars(char)、または整数 (int、unsigned、long) のみを取ります。

于 2013-03-28T19:59:23.693 に答える
0

単一のキャラクターで作業したいようです。

関数のパラメーターを変更します。

int Values(string letter)

これに:

int Values(char letter)

そして、switchステートメントは機能します。

于 2013-03-28T20:01:25.853 に答える