小编jan*_*vak的帖子

错误:类型'const char [35]'和'const char [2]'到二进制'operator +'的操作数无效

在我的文件的顶部,我有

#define AGE "42"
Run Code Online (Sandbox Code Playgroud)

稍后在文件中我多次使用ID,包括一些看起来像的行

1 std::string name = "Obama";
2 std::string str = "Hello " + name + " you are " + AGE + " years old!";
3 str += "Do you feel " + AGE + " years old?";
Run Code Online (Sandbox Code Playgroud)

我收到错误:

"错误:类型'const char [35]'和'const char [2]'到二进制'运算符+''的操作数无效"

第3行.我做了一些研究,发现这是因为C++如何处理不同的字符串,并且能够通过将"AGE"更改为"string(AGE)"来修复它.但是,直到今天我才意外地错过了其中一个实例,并且想知道为什么编译器没有抱怨,即使我还有一个只是"AGE"的实例.

通过一些反复试验,我发现我只需要string(AGE)在不连接函数体中创建的另一个字符串的行上.

我的问题是"在后台发生的事情是C++不喜欢将字符串与预处理器放置的字符串连接起来,除非你还连接了你在函数中定义的字符串."

c++ string stdstring c-preprocessor

51
推荐指数
4
解决办法
10万
查看次数

正则表达式,包括和排除R中的某些字符串

我正在尝试使用R来解析许多条目.我对我想要的条目有两个要求.我想要包含该单词apple但不包含该单词的所有条目orange.

例如:

  1. 我喜欢苹果
  2. 我真的很喜欢苹果
  3. 我喜欢苹果和橘子

我希望得到第1和第2条.

我怎么能用R来做这件事?

谢谢.

regex r

9
推荐指数
3
解决办法
8111
查看次数

从std:unique_ptr到bool的隐式强制转换出错

我正在使用Allegro创建一个简单的游戏.当我尝试验证我的显示指针不是null时,我收到编译器错误告诉我

错误C2664:'void validate(bool,std :: string)':无法将参数1从'std :: unique_ptr <ALLEGRO_DISPLAY,main :: <lambda_996846ce92067e506da99cad36e610cf >>转换为'bool'

这是我的代码

#include <iostream>
#include <memory>
#include <string>

#include <allegro5\allegro.h>

using namespace std;

const int WIDTH = 512;
const int HEIGHT = 512;

void validate(bool ptr, string errorMessage) {
    if (!ptr) {
        cerr << errorMessage << endl;
        exit(-1);
    }
}

int main() {
    auto deleter = [](ALLEGRO_DISPLAY* d) { al_destroy_display(d); };
    unique_ptr<ALLEGRO_DISPLAY, decltype(deleter)> display;

    validate(al_init(), "Failed to initialize Allegro");
    display = unique_ptr<ALLEGRO_DISPLAY, decltype(deleter)>(al_create_display(WIDTH, HEIGHT), deleter);
    validate(display, "Failed to create display"); …
Run Code Online (Sandbox Code Playgroud)

c++ smart-pointers allegro c++11 visual-studio-2013

6
推荐指数
1
解决办法
2335
查看次数

什么时候使用可选&lt;not_null&lt;T*&gt;&gt;

我正在简单地阅读参考文献,并进入了讨论使用可选参考文献的部分。赫伯给出避免的原因之一optional<T&>是因为这些情况可以“同样很好地代表optional<not_null<T*>>

我很困惑你什么时候会想要optional<not_null<T*>>。在我看来,optional取消已经结束了not_null,那么在这种情况下为什么不直接使用原始指针呢?

c++ notnull stdoptional

6
推荐指数
1
解决办法
119
查看次数

语法this-> func()和func()之间是否存在细微差别?

如果我有一个具有虚函数且没有自由函数的类,那么this->func()和之间是否存在差异func()

class Base {
    virtual void A() { std::cout << "Base" << std::endl; };
    void B() { this->A(); };
    void C() { A(); };
};

class Derived : public Base {
    virtual void A() { std::cout << "Derived" << std::endl; };
    void B2() { this->A(); };
    void C2() { A(); };
};
Run Code Online (Sandbox Code Playgroud)

是否有方法的执行任何差异B()C()?怎么样的方法B2()C2()

c++ virtual-functions

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

包含包含位域的结构的结构的大小

我有一个struct类似于以下内容:

typedef unsigned __int16 UINT16;
typedef unsigned __int64 UINT64;

struct Example {
    struct {
        UINT64 var1 : 5;
        UINT64 var2 : 2;
        UINT64 var3 : 29;
        UINT64 var4 : 23;
        UINT64      : 5;
    };
    struct {
        UINT16 var5 : 4;
        UINT16 var6 : 2;
        UINT16      : 10;
    };
};
Run Code Online (Sandbox Code Playgroud)

我期待着sizeof(struct Example)回来10,但它回来了16.我不知道为什么会发生这种情况,我希望对此事有任何意见.

c struct

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