C++--常见char问题的解决办法--从“const char [2]”转换为“char”

1-啰嗦

学习c++的时候,在构造函数的过程中,定义了char类型的函数。在赋值过程中,反复确认与老师上课的代码相同,报错也在网上可以找到解决办法。但是依旧出错,无法解决。后来发现是char赋值过程中,单双引号的问题。

2-char与单双引号的问题

2.1字符与字符串

字符:一般指单独的字符。单个字母或者符号可以有相对应的ASCII码。
字符串:通常是由多个字符组成。例如:“hello”。

2.2char与string与char*

char:是字符型整型,占用一个字节!通常处理字符。
string:通常处理字符串。
char*:是字符指针类型,当其指向一个字符串的第一个元素时,它就可以表示这个字符串。

2.3单引号与双引号

单引号:通常表示一个整数。例如:‘A’就是会编译成ASCII码对应的数值。
双引号:通常表示字符串。例如:“hello”。

3-char出现的问题

3.1Node.h文件

#ifndef NODE_H
#define NODE_H
class Node
{
public:
	Node(char data=0);
	char m_cData;//当前的值
	bool m_bIsVisited;//标识当前节点是否被访问过
};
#endif

3.2Node.cpp文件

#include"Node.h"
Node::Node(char data)
{
	m_cData = data;
	m_bIsVisited = false;
}

3.3主程序

#include"Node.h"
#include<stdlib.h>
using namespace std;
int main(void)
{
	Node *pNodeA = new Node("A");
}

如果当你new Node("A")时,会出现一下错误。
在这里插入图片描述

3.4报错问题:从“const char [2]”转换为“char”

错误	1	error C2664: “Node::Node(const Node &): 
无法将参数 1 从“const char [2]”转换为“char

3.5解决办法

  1. 最简单的办法就是将new Node(“A”)变成new Node(‘A’)。
    将你的双引号变成单引号!
  2. 由于我在Node函数中还需要使用data并且还会赋值给我的成员函数m_cData,两个都定义为char类型,赋值确是双引号字符串类型,需要这么解决:将定义使用到的char都改为char*
#ifndef NODE_H
#define NODE_H
class Node
{
public:
	Node(char* data=0);
	char* m_cData;//当前的值
	bool m_bIsVisited;//标识当前节点是否被访问过

};
#endif
#include"Node.h"
ode::Node(char* data)
{
	m_cData = data;
	m_bIsVisited = false;
}

4-还有可能出现的char问题

4.1出现的问题

  • 从“const char [6]”转换为“char”
  • 从“const char [7]”转换为“char”
  • 从“const char [8]”转换为“char”

4.2解决办法

大致的解决办法差不多都是将const添加在char的前面。

参考:
1、https://blog.csdn.net/ice_ly000/article/details/80557342
2、https://blog.csdn.net/gaoenyang760525/article/details/79588629
3、https://zhidao.baidu.com/question/537800694.html

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值