小编Hua*_*-zh的帖子

为什么包含'\ 0'和'\ t'的字符串不能使用operator ==与"\ 0\t"进行比较?

string s;
s += '\0';
s += '\t';
if (s == "\0\t")
    cout << "Yahoo";
Run Code Online (Sandbox Code Playgroud)

我不能得到"雅虎".

这是否意味着如果我想检查这样的字符串,我必须像这样编码?

if (s[0] == '\0' && s[1] == '\t')
    cout << "Yahoo";
Run Code Online (Sandbox Code Playgroud)

c++ string

12
推荐指数
2
解决办法
1068
查看次数

if语句的一个分支不能只是一个声明吗?

if语句的一个分支不能只是一个声明.如果我们需要在分支中引入一个名称,它必须被包含在一个块中.------由TC++ PL 4th.

void f1(int i)
{
    if (i)
        int x = i + 2;        //error: declaration of if-statement branch
}
Run Code Online (Sandbox Code Playgroud)

但它对VS2013和GCC4.8的编译器有意义.

工作草案(N3242)向我展示了这一点

如果selection-statement中的子语句是单个语句而不是复合语句,则就好像它被重写为包含原始子语句的复合语句一样.

代码可以等效地重写为:

void f1(int i)
{
    if (i) {
        int x = i + 2;
    }
}
Run Code Online (Sandbox Code Playgroud)

因此在if语句之后,x不再在范围内.

那么标准是什么?

c++ syntax grammar if-statement

2
推荐指数
1
解决办法
199
查看次数

标签 统计

c++ ×2

grammar ×1

if-statement ×1

string ×1

syntax ×1