【问题标题】:How to pass a char array element to a function in c++?如何将char数组元素传递给c++中的函数?
【发布时间】:2013-10-12 04:13:06
【问题描述】:

我需要将 char 数组的单个元素从 int main 传递给函数。这应该将单个字符传递给数组。不是整个数组或任何东西。我尝试将其转换为单个字符(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;}

【问题讨论】:

  • 但它实际上给出了同样的错误 -- 什么错误?
  • 你能告诉我们herp()的声明吗?
  • 我继续更新了代码的相关部分。

标签: c++ arrays function char element


【解决方案1】:

如果你的数组被声明为

char charArray[SOME_SIZE];

然后调用声明为的函数

string myFunc(char c);

通过

myFunc(charArray[index]);

不会给你一个错误。

【讨论】:

  • #include 使用命名空间标准;字符串 toMorse(char); string toMorse(char letter){ } int main() {const int SIZE = 10;字符线[大小]; cin.getline(线,尺寸);整数计数=10;字符串 toMorse(line[count]); return 0;} 给我错误“从 'char' 到 'const char*' 的无效转换” 编辑:要包括源,请输入提交。
  • @user1896606,这三段代码肯定不会。
  • 刚刚发布了代码的基本版本。
  • @user1896606,忽略缺少 #include &lt;string&gt; 和缺少函数返回值,这是一个与答案完全不同的示例。您正在使用 char 初始化 std::string
  • 感谢您发现丢失的标头和返回值,不小心将它们剪掉了。如何用 char 初始化字符串?目标是将 char 数组中的单个字母传递给函数。我可以在 int main 中读出一个字符,但由于某种原因我无法将它们传递给函数。
【解决方案2】:

在你的 main() 中,

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;
   }         

【讨论】:

    【解决方案3】:

    在您发布的代码的倒数第二个语句中,函数调用语法不正确。
    字符串 toMorse(line[count]); 需要替换为 字符串 returnString = toMorse(line[count]); 或者您可能只想传递 char 而不是从该行中删除“字符串”。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-07-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-10
      • 1970-01-01
      相关资源
      最近更新 更多