为了账号安全,请及时绑定邮箱和手机立即绑定

C++ string 数组 用strcpy怎么出不来?

/ 猿问

C++ string 数组 用strcpy怎么出不来?

Yii
翻过高山走不出你 2019-02-07 11:07:55

1 #include <iostream>
2 #include <string>
3 using namespace std;
4 int main()
5 {

7 string sr[3]={"ddf","bcd"};
8 string s[3];
9 strcpy(s,sr);
10 
11 cout<<s[0]<<endl;
12 
13 return 0;
14 }
~
报错:
2.cpp:9: error: cannot convert `std::string*' to `char*' for argument `1' to `char* strcpy(char*, const char*)'
看不懂。

问题2。如何定义string型数组指针啊。。。这程序我是想这样做
1 #include <iostream>
2 #include <string>
3 using namespace std;
4 int main()
5 {

7 string *sr[3]={"ddf","bcd"};//报错
8 string s[3];
9 strcpy(s[0],*(sr));
10 strcpy(s[1],*(sr+1));
strcpy(s[2],*(sr+2));
11 cout<<s[0]<<s[1]<<s[2]<<endl;
12 
13 return 0;
14 }
~

查看完整描述

4 回答

?
侃侃尔雅

1.string和char*是不同的。string是智能字符串,这种类型的变量是一个对象,不是一个简单的char指针。它已经重载了“赋值”运算符,因此要赋值直接s[0] = sr[0];s[1] = sr[1];等等即可。

2.string*可不是string,怎么能给string*赋一个{"ddf","bcd"}这样的东西呢?必须先
string sr[3]={"ddf","bcd"};
然后
string* psr = sr;

总之,string更像int、float,而不是char[]。strcpy是C语言时代的C风格字符串的复制函数,仅适用于char[],不适用于C++的string类。

查看完整回答
反对 回复 2019-03-20
?
月关宝盒

拷贝一个string 数组不能用strcpy函数,自己写一个嘛,很简单的,用for循环来实现,大致思路是生命另一个数组,用for循环遍历string数组,将值赋给另一个数组。


查看完整回答
反对 回复 2019-03-20
?
当年话下

string 不能和const char * 混用的.
string 的好处是提供了丰富的函数接口,便于你对字符串内容进行分析.查找.切割.替换等复杂操作.
因此代码里如果有定义常量字符串的需求的话.最好使用const char 比如:
const char cc1[]="hello";
const char* cc[3]={"tom","jerry","disney"};
而别用string来定义常量.
另外针对第二题. 请不要对string 使用 一般的 strcat ctrcpy等函数.这些函数最好用于一般的char[] 数组
而对string, 应当使用他自己的配套函数
例如
s4=s1;
s1=s2+s3;
s2=s1.substr(2,4);
s3.erase(4,2);



查看完整回答
反对 回复 2019-03-20
?
蝴蝶刀刀

string t[3][3],s[3]={"ddf","bcd"};
string *s[3]=s[0];
for (int i = 0; i <= 3;i++)
{
strcpy(t[i],*s[i]);
}
……
记不清了,应该是这样的,呵呵!



查看完整回答
反对 回复 2019-03-20
  • 4 回答
  • 0 关注
  • 444 浏览
我要回答

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信