要想使用标准C++中string类,必须要包含
#include
C++中,string是一个类(注意,不是类型)。它的赋值,直接将字符串等于给它,或将同类的变量赋给它即可。比如:
string LSStr,LSStrA; //定义
LSStr = 'aabbccdd'; //赋值
LSStrA = LSStr; //同类赋值
1、不同编译环境下的C++,对字符串的处理稍有差别。
2、最原始的C语言中,没有string,在C++里才有了string这个类。
3、注意,string是一个类,不是类型。类这个概念是C++才特有的,它的存在是为了模块化编程。类是一个相对复杂的东西,它就象一个单元,包含了自已内部的数据定义、函数等等。
二、值得注意的是,早期的C中,对字符串的处理是用字符数组来进行的,比如:
char s[30];
strcpy(s, "Good News!"); /*给数组赋字符串*/ .
或是,让编译器在定义时,自动的处理(实际上还是做了上面的两步):
char s[30] = "Good News!";
三、对于字符串的处理,C++中其实是一个相对不好理解的东西,因为这涉及到了C/C++语言的指针,也就是说,无论是什么方式,它的最根本的本质是用一个指针指向了存放字符串的地址。string这个“类”除了指针外,还扩展了常用的一些处理函数在里面,比如字符串截取之类的。
四、还有一种比较容易混的:
char *str = "Hello World!";
说的是,定义一个char指针str,它指向字符串"Hello World!"存放的地址的第一个。
五、关于字符串的处理,细说起来,还是有一些东西需要你自个去理解的,再说一次,主要还是涉及了指针,所以不太好理解。但是这些是学C/C++必需要理解的东西。指针、类、字符串,可以说是C++里的难点,多练多思考吧。
这个是因为String str1=new String("hello"),这样创建的话,"hello"这个字符串只属于str1这个对象拥有,并且只有当程序运行到这句话的时候才去分配空间,而String str2="hello"则不是,它是在编译时就已经确定了,程序启动时已经在内存了,所以大家可以共用。拓展:1、C++、java等编程语言中的字符串。 在java、C#中,String类是不可变的,对String类的任何改变,都是返回一个新的String类对象。 String 对象是 System.Char 对象的有序集合,用于表示字符串。String 对象的值是该有序集合的内容,并且该值是不可变的。2、String类是不可变(final)的,对String类的任何改变,都是返回一个新的String类对象.这样的话把String类的引用传递给一个方法,该方法对String的任何改变,对原引用指向的对象没有任何影响,这一点和基本数据类型相似。//这样操作之后s1是"abc",s2是"def"。a 和 b 是不是指向同一个地址呢,这个问题在各论坛都是谈论很激烈,其实很简单,跟下这些字符串的内存地址就好了。
#include
#include
using namespace std;
char *name[10] = { "张一", "张二", "张三", "张四", "张五", "王一", "赵一", "孙一", "章子一", "李天一" };
class Score
{
string name[10], ch, p;
double score1[10];
int i, j;
public:
Score();
Score(char* name1[], double score2[]);
void judge();
void show();
};
Score::Score()
{
for (i = 0; i<10; i++)
{
score1[i] = 0;
}
}
Score::Score(char* name1[], double score2[])
{
for (i = 0; i<10; i++)
{
name[i]=name1[i];
score1[i] = score2[i];
}
}
void Score::judge()
{
double x;
for (i = 1; i<10; i++)
for (j = 0; j<10 - i - 1; j++)
{
if (name[j]{
ch = name[j], name[j] = name[j + 1], name[j + 1] = ch;
x = score1[j], score1[j] = score1[j + 1], score1[j + 1] = x;
}
}
}
void Score::show()
{
for (i = 0; i<10; i++)
cout << name[i] << " " << score1[i] << endl;
}
int main()
{
//string name[10];
double score1[10];
int i;
for (i = 0; i<10; i++)
cin >> score1[i];
Score a(name, score1);
a.judge();
a.show();
return 0;
}