0

char 配列の 1 つの要素を int main から関数に渡す必要があります。これにより、単一の文字が配列に渡されます。配列全体などではありません。私はそれを単一のchar(IE、char herps = charArray [1];)に変換してからherpsとして関数に渡そうとしましたが、実際には同じエラーが発生します。

関数は文字列 herp(char) でなければなりません。. 配列にはスペースなどが含まれています。

これにより、「「char」から「const char*」への変換が無効です」というエラーが表示されます

ソースコード:

    #include <iostream>
    #include <string>
    using namespace std;
    string toMorse(char);

    string toMorse(char letter){
    return "herp";
    }

    int main()
    {const int SIZE = 10;
    char line[SIZE];
    cin.getline(line, SIZE);
    int count=10;
    string toMorse(line[count]);
    return 0;}
4

3 に答える 3

1

あなたのメイン()で、

string toMorse(line[count]);

あなたは toMorse 関数を呼び出していません。実際には toMorse という名前の文字列インスタンスを作成しています。コンストラクターが呼び出され、 const char * を引数として探します。std::stringを参照してください。

サイズ 10 の char 配列を作成し、11 番目のインデックスを読み取ろうとしていますが、これも間違っています。

変更されたコード:

   int main()
   {
    const int SIZE = 10;
    char line[SIZE];
    cin.getline(line, SIZE);
    int count=9; //Any whole number between 0 and SIZE-1 is acceptable.
    toMorse(line[count]);
    return 0;
   }         
于 2013-10-05T06:22:27.970 に答える
1

配列が次のように宣言されている場合

char charArray[SOME_SIZE];

次に、次のように宣言された関数を呼び出します

string myFunc(char c);

経由

myFunc(charArray[index]);

エラーは発生しません。

于 2013-10-05T02:59:14.083 に答える
0

投稿されたコードの最後から 2 番目のステートメントで、関数呼び出しの構文が正しくありません。
文字列 toMorse(行[カウント]); 文字列 returnString = toMorse(line[count]); に置き換える必要があります。または、その行から「文字列」を削除するよりも、単に char を渡したい場合があります。

于 2013-10-05T05:53:08.807 に答える