C++ &引用;错误:对‘;的调用没有匹配函数;向后推(字符[6])”;。如何解决此代码中的错误?

C++ &引用;错误:对‘;的调用没有匹配函数;向后推(字符[6])”;。如何解决此代码中的错误?,c++,vector,C++,Vector,我想在向量中存储字符。但当我想推回匹配的角色时,它不起作用 此行中显示错误- v.push_back(arithmetic_operator[i]); 整个代码是- #include<bits/stdc++.h> using namespace std; int main() { vector<char>v; char str[100]; gets(str); char *ptr; ptr = strtok(str, " "

我想在向量中存储字符。但当我想推回匹配的角色时,它不起作用

此行中显示错误-

v.push_back(arithmetic_operator[i]);
整个代码是-

#include<bits/stdc++.h>
using namespace std;

int main()
{
    vector<char>v;

    char str[100];
    gets(str);

    char *ptr;
    ptr = strtok(str, " ");

    char arithmetic_operator[6][6] = {"+", "-", "*", "/", "%", "="};

    while(ptr !=NULL)
    {   
        // arithmetic operator
        for(int i=0; i<sizeof(arithmetic_operator); i++){
            if(strcmp(arithmetic_operator[i], ptr) == 0)
            {
                v.push_back(arithmetic_operator[i]);
            }
            else
            {
                continue;
            }
        }

        ptr = strtok(NULL, " ");
    }

    for (auto it = v.begin(); it != v.end(); it++)
    {
        cout << *it << " ";
    }

    return 0;
}
#包括
使用名称空间std;
int main()
{
向量;
char-str[100];
获取(str);
char*ptr;
ptr=strtok(str,“”);
字符算术_运算符[6][6]={“+”、“-”、“*”、“/”、“%”、“=”};
while(ptr!=NULL)
{   
//算术运算符
对于(int i=0;i

但是显然,
算术运算符[i]
一点也不像字符。如果您打印整个错误,它甚至可能会告诉您真正的类型,但作为线索,
算术运算符[i][0]
将是一个
char

来回答您的问题:您正在将
char*
传递给
向量
。因此,将
v
定义为
向量
将解决此错误


<> P> >如已指出的,<代码>获取 >在C++ 11中,在C++ 14中删除。对于相同的功能,可以使用<代码> STD::FGES。看一下。< /P>不要使用<代码>获取< /代码>。它以前被弃用,并且已经从C和C++标准中删除。然而,你要推回它的pe
char[6]
v
是一个
char
的向量。你的意思是要推回pack
算术运算符[i][0]
(我不建议将运算符存储在这个2D数组结构中)?建议阅读:
sizeof(算术运算符)
没有达到您期望的效果。它返回整个数组的大小(以字节为单位),因此在本例中返回36。您对
sizeof(算术运算符)
有什么看法?使用
继续;
?我感觉OP会误解您的线索。正确的代码是
算术运算符[I][0]
说得好,我减少了线索的误导性。不过,我仍然不知道为什么它首先使用
字符[6][6]
。是的,
算术运算符[I][0]
是正确的代码。它正在工作。
#include<bits/stdc++.h>
vector<char>v;
v.push_back(...);
char arithmetic_operator[6][6] = {"+", ... };