找不到错误的解决方案 "invalid conversion from char to const char*"
Cant find resolution for the error "invalid conversion from char to 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)
{ }
这是与第二个错误^^相关的代码(在字符串函数中)。
我把两段代码都放了,因为我不知道哪个是由哪个引起的。
这个:
const string spaces = (greeting.size(), ' ');
应该是
const string spaces(greeting.size(), ' ');
对于 =
,它会尝试用表达式 (greeting.size(), ' ')
的结果初始化 spaces
。该表达式使用 逗号运算符 ,它计算并丢弃 greeting.size()
,并给出 ' '
作为其结果;所以它相当于
const string spaces = ' ';
尝试用单个字符初始化 string
,但没有合适的构造函数来执行此操作。
删除 =
,它使用两个构造函数参数进行初始化,给出一个包含请求的空格数的字符串。
我环顾四周,但找不到问题的答案。该程序假设在标题周围放置星形边框 (*
),但我收到错误消息:
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)
{ }
这是与第二个错误^^相关的代码(在字符串函数中)。
我把两段代码都放了,因为我不知道哪个是由哪个引起的。
这个:
const string spaces = (greeting.size(), ' ');
应该是
const string spaces(greeting.size(), ' ');
对于 =
,它会尝试用表达式 (greeting.size(), ' ')
的结果初始化 spaces
。该表达式使用 逗号运算符 ,它计算并丢弃 greeting.size()
,并给出 ' '
作为其结果;所以它相当于
const string spaces = ' ';
尝试用单个字符初始化 string
,但没有合适的构造函数来执行此操作。
删除 =
,它使用两个构造函数参数进行初始化,给出一个包含请求的空格数的字符串。