字符串上的+缺少操作数

时间:2012-10-11 15:28:32

标签: c++

基于看到正在编译的代码中的明显错误,我将其缩减为此

#include <iostream>
#include <string>
using namespace std;

int main()
{
    const char* p = "The ";
    string s = string("Bob ") + + "world.";
    cout << s << endl;
}

我原以为maximal munch会将“+ +”视为“++”并产生错误。

4 个答案:

答案 0 :(得分:2)

最大咀嚼是指处理一系列标点符号,没有任何空格

您的代码有空格。当中间有空格时,解析器/词法分析器不会创建单个标记,因为语法不允许运算符包含空格。

答案 1 :(得分:2)

你很想知道“最大咀嚼”的作用 - 它不能神奇地连接操作符 - + +不会成为++。后者适用于"world.",但就是这样:

string s = string("Bob ") + (+"world.");

想想

int x = +1;

答案 2 :(得分:1)

不,+ ++不同。最终的子表达式是+"world.",它是指针上的一元+,它什么都不做。

答案 3 :(得分:0)

由于两个+之间的空格,每个+被词法分析器视为不同的标记。