小编250*_*250的帖子

C++宏'##'在' - >'运算符后不起作用

我有一个shared_ptr对象x,它有get和set方法,如下所示:

x->a_value();
x->set_a_value();
x->b_value();
x->set_b_value();
Run Code Online (Sandbox Code Playgroud)

当我尝试定义宏时:

#define MAC(type) \
  x->set_##type##_value(val);

MAC(a)
Run Code Online (Sandbox Code Playgroud)

它工作正常,但当我这样做:

#define MAC(type) \
  x->##type##_value();

MAC(a)
Run Code Online (Sandbox Code Playgroud)

它给出了以下编译错误: pasting formed '->a', an invalid preprocessing token

c++ macros c++11

23
推荐指数
2
解决办法
2448
查看次数

在没有弹出窗口的情况下制作google auth request gapi.auth

需要在js中发出auth请求,但浏览器不支持弹出窗口.有没有办法重定向到新的URL或在应用程序的html5页面中显示请求

javascript google-api google-api-js-client google-oauth2

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

如何在 C++ 中比较两个字符串之间可以有空字符 \0?

我想比较两个字符串 s1 和 s2 ,两个字符串之间可以有空字符。我想要区分大小写和不敏感的比较,如 strcmp 和 strcasecmp。假设我的字符串是:

std::string s1="Abcd\0abcd"
std::string s2="Abcd\0cccc"
Run Code Online (Sandbox Code Playgroud)

目前,我正在执行strcmp(s1.c_str(), s2.c_str())and strcasecmp(s1.c_str(), s2.c_str())butstrcasecmpstrcmp最终在这种情况下给出 equal 并跳过之后的比较\0。我可以使用任何库来比较这些字符串。

c++ strcmp

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

C++ Map 使用非默认构造函数初始化对象

在 C++ 中,假设我有一个无序映射定义如下:

unordered_map<int, MyClass> my_map;
auto my_class = my_map[1];
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,如果 my_map 中没有 1 作为键,它将使用默认构造函数初始化 MyClass 并返回。但是有没有办法使用 MyClass 的非默认构造函数进行初始化?

c++

5
推荐指数
2
解决办法
5030
查看次数