c++ 浏览器错误消息“错误:无法从'std::string* {aka std::basic_string < char>*}'转换为'std::string {aka std::basic_string< char>}'”|“

7fhtutme  于 11个月前  发布在  其他
关注(0)|答案(2)|浏览(312)

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

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

}

字符串
我得到这个错误:
错误:无法从'std::string* {aka std::basic_string*}'转换为'std::string {aka std::basic_string}'|

jk9hmnmh

jk9hmnmh1#

一个string元素的数组作为实际参数传递,其中形式参数是单个string
你可以用一个字符串替换数组。
或者用一个集合,或者任何适合这个目的的东西,但是之后你必须相应地改变被调用的函数。
这个错误提到了std::string*而不是一个数组,比如std::string[9],因为数组表达式 * 衰减 * 为一个表示指向第一个项的指针的表达式,这是因为数组没有绑定到引用或传递给sizeof或任何必须保留表达式的数组性质的东西。

vmdwslir

vmdwslir2#

问题是

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”的文件,但内容不是作为第二个参数传递的字符串数组。

相关问题