Я пытаюсь сделать функцию, которая записывает файл, но у меня проблемы с передачей строки в качестве параметра.
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>}'|
Массив string
элементы передаются как фактический аргумент, где формальный аргумент является единственным string
,
Вы можете заменить массив одной строкой.
Или с набором, или с тем, что соответствует цели, но тогда вам придется соответствующим образом изменить вызываемую функцию.
Ошибка упоминает std::string*
вместо массива, как std::string[9]
потому что выражение массива распады к выражению, обозначающему указатель на первый элемент, что он делает, потому что массив не привязан к ссылке или не передан sizeof
или что-нибудь, где природа массива выражения должна быть сохранена.
Проблема заключалась в том, что
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», но содержимое не является массивом строк, передаваемых в качестве второго параметра.