Не могу найти разрешение для ошибки «неверное преобразование из char в const char *»

Я посмотрел вокруг, но не могу найти ответ на свой вопрос. В программе предполагается поставить границы звездочек (*) вокруг заголовка, но я получаю ошибку:

invalid conversion from 'char' to 'const char*' [-fpermissive]

а также ошибка

initializing argument 1 of 'std::basic_string<_CharT, _Traits, _Alloc>::basic_string(const _CharT*, const _Alloc&) [with _CharT = char; _Traits = std::char_traits<char>; _Alloc = std::allocator<char>]' [-fpermissive]|
#include <iostream>
#include <string>

using namespace std;

int main()
{
cout << "Please enter your name: " << endl;
string name;
cin >> name;

//Build the message that we intend to write
const string greeting = "Hello " + name + "!";

//Build the second and fourth line of the output
const string spaces = (greeting.size(), ' ');
const string second = "* " + spaces + " *";

//Build the first and fifth lines of the output
const string first = "* " + spaces + " *";

//Write all the output
cout << endl;
cout << first << endl;
cout << second << endl;
cout << "* " << greeting << " *" << endl;
cout << second << endl;
cout << first << endl;

return 0;
}

Это код для печати границы вокруг заголовка ^^ (относится к первой ошибке).

// TBD: DPG annotate
template<typename _CharT, typename _Traits, typename _Alloc>
*Error ->* basic_string<_CharT, _Traits, _Alloc>::
basic_string(const _CharT* __s, const _Alloc& __a)
: _M_dataplus(_S_construct(__s, __s ? __s + traits_type::length(__s) :
__s + npos, __a), __a)
{ }

Это код, относящийся ко второй ошибке ^^ (которая есть в строковой функции).

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

-4

Решение

Это:

const string spaces = (greeting.size(), ' ');

должно быть

const string spaces(greeting.size(), ' ');

С =, он пытается инициализировать spaces с результатом выражения (greeting.size(), ' '), Это выражение использует оператор запятой, который оценивает и отбрасывает greeting.size()и дает ' ' как результат; так что это эквивалентно

const string spaces = ' ';

пытается инициализировать string с одним символом, когда нет подходящего конструктора для этого.

Удаление =, он инициализируется с использованием двух аргументов конструктора, давая строку, содержащую запрошенное количество пробелов.

4

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


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