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

问题描述 投票:0回答:2

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

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>}'|
c++ pointers parameter-passing writefile c-str
2个回答
3
投票

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

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

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


该错误提到

std::string*
而不是数组,如
std::string[9]
,因为数组表达式 decays 为表示指向第一项的指针的表达式,这样做是因为数组未绑定到引用或传递到
sizeof
或任何必须保留表达式数组性质的地方。


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)

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

© www.soinside.com 2019 - 2024. All rights reserved.