字符 * 和字符串在C++中有何不同?(在描述中编写代码)
How are char * and string different in C++ ? (wrt the code in the description)
来自C,我总是被告知char *和字符串彼此非常相似。这是我使用字符串和字符 * 实现的一段代码。
后者给出一个错误。
prog.cpp: 在函数 'char* foo()' 中:
prog.cpp:8:15: 警告:ISO C++禁止转换字符串常量 到 'char*' [-wwrite-strings] 字符 *兄弟="卡兰";
为什么后者没有按预期工作?
字符串一:
#include<iostream>
#include<string>
using namespace std;
string foo()
{
string bro="karan";
return bro;
}
int main()
{
cout << foo() << endl;
return 0;
}
字符 * 一:
#include<iostream>
#include<string>
using namespace std;
char *foo()
{
char *bro="karan";
return bro;
}
int main()
{
cout << foo() << endl;
return 0;
}
char *bro="karan";
bro
变量是一个char*
。字符串"karan"
是一种const char[6]
数据类型,将隐式转换为 const char*
,这意味着"指向常量值的指针"
您的警告来自这样一个事实,即在该行上,您尝试将指向const
数据的内容分配给指向非const
数据的内容。
在这里,std::string
和 char*
与以下事实不同:std::string
有一个接受const char*
的构造函数,请参阅此处的参考,在内部分配一个 char 数组,并复制字符串,而带有 char*
的代码不会复制任何内容。
相关文章:
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 代码在main()中运行,但在函数中出现错误
- 在VS代码中交叉编译Windows与Linux上的MinGW的SDL程序
- 编译包含字符串的代码时遇到问题
- 我在c++代码中生成了一个运行时#3异常
- 如何在linux终端中同时编译和运行c++代码
- 为cl.exe(Visual Studio代码)指定命令行C++版本
- 在Linux for Windows上编译C++代码时出错
- 我的字符计数代码计算错误.为什么
- 孤立代码块在结构中引发异常
- 在编译C++代码(具有dlib和opencv)到WASM时面临问题
- 为什么我的C#代码在调用回C++COM直到Task时会暂停.等待/线程.加入
- 处理小于cpu数据总线的数据类型.(c++转换为机器代码)
- 使用 select() 和大量文件描述符的外部代码
- &function_name 在以下代码中描述了什么
- 字符 * 和字符串在C++中有何不同?(在描述中编写代码)
- OpenCV代码将存储在列表中的描述符与新的图像描述符进行比较
- 提升错误代码人类可读的描述
- 如何获得WinRT / Windows 10 Store代码的HRESULT错误代码的描述
- 使用符号c++库:如何在objective C中打印矩阵输出描述?因为我加了两个矩阵.代码如下,谢谢