【问题标题】:error: could not convert from 'std::string* {aka std::basic_string<char>*}' to 'std::string {aka std::basic_string<char>}'|错误:无法从 'std::string* {aka std::basic_string<char>*}' 转换为 'std::string {aka std::basic_string<char>}'|
【发布时间】:2017-03-10 21:15:05
【问题描述】:

我正在尝试创建一个写入文件的函数,但在将字符串作为参数传递时遇到问题。

void writeFile(string filename, string letters, int size)
{
     ofstream outputfile("output.txt");
     outputfile << letters;
     outputfile.close();

 }

int main()
{
    string letters[] = {"u", "l", "s", "n","m", "z", "a", "p", "b"};

    int size = 9;

    string filename = "Inputfile.txt";

    writeFile(inputfilename.c_str(),letters,size);

}

并出现此错误。

error: could not convert from 'std::string* {aka std::basic_string<char>*}' to 'std::string {aka std::basic_string<char>}'|

【问题讨论】:

  • unsortedValues 是什么?
  • 变量unsortedValues在哪里?该错误表明它是string* 而不是string
  • 应该是letters 而不是unsortedValues
  • filename 参数应该是std::string,而不是C 字符串时,你为什么要使用inputfilename.c_str()
  • @SaltyCode writeFile() 只想要一个字符串写入文件,但你给它一个数组。错误信息非常清楚。

标签: c++ pointers parameter-passing writefile c-str


【解决方案1】:

string 项目数组作为实际参数传递,其中形式参数是单个 string

您可以将数组替换为单个字符串。

或者用一个集合,或者任何适合目的的东西,但是你必须相应地改变被调用的函数。


错误提到std::string* 而不是数组,例如std::string[9],因为数组表达式衰减 到一个表示指向第一项的指针的表达式,它这样做是因为数组不是绑定到引用或传递给 sizeof 或任何必须保留表达式的数组性质的东西。

【讨论】:

    【解决方案2】:

    问题是

    void writeFile(string filename, string letters, int size)
    

    期待一个字符串,但是,

    string letters[] = {"u", "l", "s", "n","m", "z", "a", "p", "b"};
    

    是一个字符串数组,我通过将函数第二个参数更改为“修复”它

    void writeFile(string outputFileName, string words[], int arraylength)
    

    使用“固定”我的意思是不管它现在确实创建了一个名为“output.txt”的文件,但内容不是作为第二个参数传递的字符串数组。

    【讨论】:

      猜你喜欢
      • 2015-04-28
      • 1970-01-01
      • 2014-07-13
      • 1970-01-01
      • 2023-03-21
      • 2021-10-28
      • 1970-01-01
      • 1970-01-01
      • 2021-09-16
      相关资源
      最近更新 更多