分词器 - 预期聚合对象使用"{...}"进行初始化

Tokenizer - Initialization with '{...}' expected for aggregate object

本文关键字:初始化 对象 分词      更新时间:2023-10-16

我正在创建一个程序,该程序将使用一个分数并将其降到最低项。我使用一个标记器来解析字符串(在我的例子中,我读取的是字符串),并将分子和分母分离。

我得到了以下错误,正在寻找原因的解释。我查找过有类似问题的人,但我仍然是一个初学者,正在寻找一个基本的解释和建议,以找到解决问题的替代方法

RationalNum() // Default
    :numerator(0), denominator(1){}
RationalNum(int num) // Whole Number
    :numerator(num), denominator(1){}
RationalNum(int num, int denom) // Fractional Number
    :numerator(num), denominator(denom){}
RationalNum(string s)
{
    int num = 0;
    char str[] = s;
}

我知道问题在于将char数组设置为s。

谢谢你花时间看这个。

您正试图将一个char数组初始化为std::string,这是一个对象。这个错误的字面意思是编译器期望的初始化看起来像这样:

char str[] = {'1','2','3','4'};

然而,由于您无论如何都在计划字符串操作,因此只保留字符串对象比将其分配给char数组要容易得多。

您可以使用字符串流和getline,而不是从头开始构建解析器。使用"/"作为分隔符。您可以在构造std::字符串流时将其作为参数传递,从而用字符串初始化它。您还可以使用另一个字符串流,通过使用>>运算符将字符串转换为数字。