相关疑难解决方法(0)

C++中字符串文字的数据类型是什么?

我对字符串文字的数据类型感到困惑.是一个const char *还是一个const char

c++ string literals

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

C++ const正确性与字符串文字

根据C++标准,字符串文字类型是 array of const char

auto constStr = "aaa";
char* nonConstStr = constStr; //Error here, cannot convert from 'const char *' to 'char *'
char* stillNonConstStr = "aaa"; //Why I don't have error here?
Run Code Online (Sandbox Code Playgroud)

你能解释一下为什么在第3行我没有收到错误吗?

c++ const

13
推荐指数
2
解决办法
1014
查看次数

C++构造函数 - 通过引用传递仅适用于const.为什么?

所以今天早些时候,我正在追赶好的旧C++,当我编译代码时,它无法正常工作.像一些程序员一样,我开始讨厌,并最终发现添加键盘const解决了这个问题.但是,我不喜欢黑客攻击很多,并且想要找出为什么代码在添加之后工作正常const.

这是我的代码之前添加const到构造函数:

#include <iostream>
#include <string>

using namespace std;

class Names {
private:
    string _name;
    string _surname;

public:
    Names(string &name, string &surname) : _name(name), _surname(surname) {}

    string getName() const {return _name;}
    string getSurname() const {return _surname;}
};

int main(){
    Names names("Mike", "Man");

    cout << names.getName() << endl;
    cout << names.getSurname() << endl;
}
Run Code Online (Sandbox Code Playgroud)

我收到这些错误:

names.cc:19:27: error: no matching function for call to ‘Names::Names(const char [5], const char [4])’
  Names names("Mike", "Man");
                           ^
names.cc:19:27: note: …
Run Code Online (Sandbox Code Playgroud)

c++ parameter-passing pass-by-reference pass-by-value c++11

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

无法在 RapidJSON 函数调用中使用 std::string 变量

我是 C++ 新手,遇到了一个问题。我正在使用 rapidJSON 创建 JSON 文档。

void setKeyValue() {
        Value obj(kObjectType);
        Value key("key");
        Value val(42);;
        obj.AddMember(key, val, d.GetAllocator());
    }
Run Code Online (Sandbox Code Playgroud)

按预期工作。但是当我尝试替换对 key 的调用以使其使用传入的参数时,如下所示:

void setKeyValue(string myKey) {
        Value obj(kObjectType);
        Value key(myKey);
        Value val(42);;
        obj.AddMember(key, val, d.GetAllocator());
    }
Run Code Online (Sandbox Code Playgroud)

Visual Studio 中的myKey 会Value key(myKey)出现一个红色卷曲的下标,内容如下:

在此输入图像描述

造成这种情况的原因是什么以及如何解决?

c++ rapidjson c++17

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

为什么int*数组不能直接初始化但char*数组可以?

为什么int*数组不能直接初始化,但char*数组可以?我知道它们不一样,但导致这种情况发生的确切差异是什么(请解释原因)?

我知道为什么不能int* p[]直接初始化.
我不知道怎么可能char* name[]

例如:

char* name[] = { "Mostafa Chamran", "Mehdi Zeinoddin", "Ebrahim Hemmat" };
Run Code Online (Sandbox Code Playgroud)

int* p[3] = {1, 2, 3};
Run Code Online (Sandbox Code Playgroud)

给出错误:转换无效

我不知道要搜索什么来查找相关问题,所以我不知道是否存在相同的问题

c++ arrays pointers

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

为什么可以在字符串文字中添加整数?

我在乱搞,发现一些奇怪的东西.你实际上可以做"a" + 2,程序编译好,但不输出任何东西.然而"a" + 32array subscript is above array bounds.

c++

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