C++,从'char'到'const char*'的转换无效

fud*_*din 8 c++ string pointers

在C++中我有这个程序:

#include <iostream>
using namespace std;
int main(){
    string expression_input;
    cout << "User Input: " << endl;
    getline(cin, expression_input);
    expression_input.insert(0, '(');   //error happens here.
    expression_input.append(')');
}
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

prog.cpp:15: error: invalid conversion from ‘char’ to ‘const char*’

prog.cpp:15: error:   initializing argument 2 of 
‘std::basic_string<_CharT, _Traits, _Alloc>& std::basic_string<_CharT, 
_Traits, _Alloc>::insert(typename _Alloc::rebind<_CharT>::other::size_type, 
const _CharT*) [with _CharT = char, _Traits = std::char_traits<char>, 
_Alloc = std::allocator<char>]’
Run Code Online (Sandbox Code Playgroud)

我要char转到const char*哪里?我不能在字符串的第0位插入一个字符吗?

Pau*_*l R 10

错误消息告诉您需要知道的所有内容 - 您正在尝试传递a 所需的char参数const char *.

你只需要改变:

expression_input.insert(0,'(');
expression_input.append(')');
Run Code Online (Sandbox Code Playgroud)

至:

expression_input.insert(0,"(");
expression_input.append(")");
Run Code Online (Sandbox Code Playgroud)


Nic*_*las 5

没有std::string::insert只需要一个位置和一个字符的。你想要的是insert(0, 1, '('),它在位置 0 插入 1 个字符。

这同样适用于std::string::appendappend(1, ')')