C++ string 数组 用strcpy怎么出不来?
1#include<iostream>2#include<string>3usingnamespacestd;4intmain()5{67stringsr[3]={"dd...
1 #include <iostream>
2 #include <string>
3 using namespace std;
4 int main()
5 {
6
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 {
6
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 }
~
怎么能出来。。顺便讲解一下strcpy怎么复制string数组啊。。 展开
2 #include <string>
3 using namespace std;
4 int main()
5 {
6
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 {
6
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 }
~
怎么能出来。。顺便讲解一下strcpy怎么复制string数组啊。。 展开
7个回答
展开全部
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类。
2.string*可不是string,怎么能给string*赋一个{"ddf","bcd"}这样的东西呢?必须先
string sr[3]={"ddf","bcd"};
然后
string* psr = sr;
总之,string更像int、float,而不是char[]。strcpy是C语言时代的C风格字符串的复制函数,仅适用于char[],不适用于C++的string类。
展开全部
C++ string 是类,strcpy是C的字符串操作函数,当然不行, 可用c_str()转成以0结尾的C字符串才可用
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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);
等
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);
等
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
2楼的说的对,string这个东西的拷贝,查找,合并等操作非常方便,并且安全效率高;
不过 string *psr = sr; 这句不是拷贝一个字符串数组,psr本身没有对象实例,只是指向sr数组实例的指针
不过 string *psr = sr; 这句不是拷贝一个字符串数组,psr本身没有对象实例,只是指向sr数组实例的指针
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询