Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/137.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C+;中的char*和string有何不同+?(请在说明中填写代码)_C++_String - Fatal编程技术网

C++ C+;中的char*和string有何不同+?(请在说明中填写代码)

C++ C+;中的char*和string有何不同+?(请在说明中填写代码),c++,string,C++,String,来自C语言,我一直被教导char*和string彼此非常相似。 下面是我使用string和char*实现的一段代码 后者给出了一个错误。 prog.cpp:在函数“char*foo()”中: Pc.CPP:8:15:警告:ISO C++禁止转换字符串常量 到“char*”[-Wwrite strings] char*bro=“karan” 为什么后者不能按预期工作 字符串一: #包括 #包括 使用名称空间std; 字符串foo() { 字符串bro=“karan”; 返回兄弟; } int m

来自C语言,我一直被教导char*和string彼此非常相似。 下面是我使用string和char*实现的一段代码

后者给出了一个错误。

prog.cpp:在函数“char*foo()”中:

Pc.CPP:8:15:警告:ISO C++禁止转换字符串常量 到“char*”[-Wwrite strings] char*bro=“karan”

为什么后者不能按预期工作

字符串一:

#包括
#包括
使用名称空间std;
字符串foo()
{
字符串bro=“karan”;
返回兄弟;
}
int main()
{
cout
char*bro=“karan”;
bro
变量是一个
char*
。字符串
“karan”
是一个
const char[6]
数据类型,将隐式转换为
const char*
,这意味着“指向常量值的指针”

您的警告来自这样一个事实,即在该行中,您试图将指向
const
数据的内容分配给指向非
const
数据的内容


这里,
std::string
char*
不同于
std::string
有一个构造函数,它接受一个
const char*
,在内部分配一个char数组,并复制字符串,而带有
char*
的代码不会复制任何内容。

“后者给出了一个错误。”我们应该猜测这个错误?s/
string*foo()
/
string foo()) >我想你是说第一个代码片段会出错。这些错误与<代码> char */COD>和<代码> STD::String 之间没有任何关系。抱歉。我将尽快编辑它。@ AururaGaOrgaAJAO。以上仅是出于遗留原因的警告。严格遵守应该遵守。这不是有效的C++代码。
#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;
}