错误:无法转换为&#39; std :: string * {aka std :: basic_string <char> *}&#39; to&#39; std :: string {aka std :: basic_string <char>}&#39; |

时间:2016-10-28 02:46:39

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

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

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

2 个答案:

答案 0 :(得分:3)

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

您可以使用单个字符串替换数组。

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

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

答案 1 :(得分:0)

问题在于

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)

使用“fixed”我意味着无论如何,它现在都会创建一个名为“output.txt”的文件,但内容不是作为第二个参数传递的字符串数组。