string,char*,char数组的区别
望各位高人指点!!!!!!!!!
#include <iostream>
using namespace std;
#include <string>
#include <cstring>
struct candybar{
string name;
double weight;
int kaluli;
};
int main()
{
candybar snack={"wowo",1.2,100};//这句为什么编译通不过?
string a;
strcpy(a,"my");//为什么编译也通不过?
char *b="hello";
char *c="world";
strcpy(b,c);//????为什么编译能通过,不能执行?
return 0;
}
能详细说一下string, char[], char* 这三者的区别吗???
[解决办法]
string: c++帮你做好的一个类类型,是以NULL为结束标志的字符数组
char[]: 字符数组
char* : 字符指针
char *b="hello"; --字面值字符串,const类型,不能被修改
char *c="world"; --同上
哈哈,本人初学,这只是俺的理解,不知是否正确!
[解决办法]
string 这个是个类,不能称之为数据类型
char[] char型数组
char* 指向char类型的指针
[解决办法]
#include <iostream>using namespace std;#include <string>#include <cstring>struct candybar{string name;double weight;int kaluli;};int main(){candybar snack={"wowo",1.2,100};//这句为什么编译通不过?string a;a="my";char *b="hello";char *c="world";b=c;return 0;}
[解决办法]
PPower回答的非常详细,可作参考。。。
关于:1、candybar snack={"wowo",1.2,100};
在我这边测试结论是跟编译器有关,环境为:IDE VC6, 编译器为默认时会出错,换为intel C++编译器时,编译通过,所以请换用较新的编译器试下
[解决办法]
对一些古老的编译器来说(VC6.0实在是太古老了,2008MS的产品,十几年了,现在都出VS2011了),C++的一些新标准不可使用。如果类中(对C++来说struct是特殊的class)有非基本类型(如类),它就不能初始化。
如果你一定要用vc6.0,可以这样:
#include <iostream>
using namespace std;
#include <string>
#include <cstring>
struct candybar{
string name;
double weight;
int kaluli;
candybar(string x,double y,int z)
{
name=x;
weight=y;
kaluli=z;
}
};
int main()
{
//candybar snack={"wowo",1.2,100};//这句为什么编译通不过?
candybar snack("wowo",1.2,100);
return 0;
}
当然,用
snack.name="wowo";
更方便些。
[解决办法]
看一下社区的帮助。有关结贴在第三点的第4小点
http://community.csdn.net/Help/HelpCenter.htm