ошибка: не удалось преобразовать из ‘std :: string * {aka std :: basic_string & lt; char & gt; *}’ в ‘std :: string {aka std :: basic_string & lt; char & gt;}’ |

Я пытаюсь сделать функцию, которая записывает файл, но у меня проблемы с передачей строки в качестве параметра.

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

-1

Решение

Массив string элементы передаются как фактический аргумент, где формальный аргумент является единственным string,

Вы можете заменить массив одной строкой.

Или с набором, или с тем, что соответствует цели, но тогда вам придется соответствующим образом изменить вызываемую функцию.


Ошибка упоминает std::string* вместо массива, как std::string[9]потому что выражение массива распады к выражению, обозначающему указатель на первый элемент, что он делает, потому что массив не привязан к ссылке или не передан sizeof или что-нибудь, где природа массива выражения должна быть сохранена.

3

Другие решения

Проблема заключалась в том, что

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», но содержимое не является массивом строк, передаваемых в качестве второго параметра.

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector