如题所述
#include "stdafx.h"
#include
#include
#include"string" //操作字符串必须包含的头文件
using namespace std;
void main()
{
string s1 = "aaaaa";
string s2("bbbbb");
string s3 = s2; //通过拷贝构造函数,初始化s3
string s4(10, 'a');
string s5 = "hello"+"world"; //错误
cout << "s1:" << s1 << endl;
cout << "s2:" << s2 << endl;
cout << "s3:" << s3 << endl;
cout << "s4:" << s4 << endl;
return ;
}
扩展资料
C++右值引用和移动赋值函数:
编程语言中赋值表达式左边的值称为左值,右边的值称为右值。左值对应内存的一段命名空间,可以用取址运算符“&”取出内存地址。
此时的内存单元有或显式或隐式使用的地址值和实际值。右值则是显式利用的是内存单元的实际值,其临时存在于内存或寄存器中。使用“&&”运算符可以定义一个右值引用,将一个右值转变为一个左值,move()函数可以将一个左值转换为一个右值。
左值引用,使用T&,只能绑定左值(其中T是一个具体类型)。右值引用,使用T&&,只能绑定右值;常量左值,使用constT&,既可以绑定左值又可以绑定右值;已命名的右值引用,编译器会认为是个左值。
C++中,string是一个类(注意,不是类型)。它的赋值,直接将字符串等于给它,或将同类的变量赋给它即可,可以参考以下的代码:
string LSStr,LSStrA; //定义
LSStr = 'aabbccdd'; //赋值
LSStrA = LSStr; //同类赋值
扩展资料:
C++标准库中string类以类型的形式对字符串进行封装,且包含了字符序列的处理操作。
注意
String类是不可变(final)的,对String类的任何改变,都是返回一个新的String类对象。这样的话把String类的引用传递给一个方法,该方法对String的任何改变,对原引用指向的对象没有任何影响,这一点和基本数据类型相似,如下:
string s1,s2;
s1="abc";
s2=s1;
s2="def";
//这样操作之后s1是"abc",s2是"def".
参考资料来源:
本回答被网友采纳具体如下:
#include "stdafx.h"
#include
#include
#include"string" //操作必须包含的
using namespace std;
void main()
{
string s1 = "aaaaa";
string s2("bbbbb");
string s3 = s2; //通过拷贝构造函数,初始化s3
string s4(10, 'a');
string s5 = "hello"+"world"; //错误
cout << "s1:" << s1 << endl;
cout << "s2:" << s2 << endl;
cout << "s3:" << s3 << endl;
cout << "s4:" << s4 << endl;
return ;
}
扩展资料:
C++右值引用和移动赋值函数:
在中,赋值表达式的左边的值称为左值,右边的值称为右值。 左值对应于内存中的一个,可以使用地址“&”获取内存地址。
此时的存储单元具有显式或隐式使用的地址值和实际值。 右值是显式使用的存储单元的实际值,该值临时存在于或寄存器中。 “ &&”运算符可用于定义右值引用,将右值转换为左值,而move()函数可将左值转换为右值。
使用T&的左值引用只能绑定左值(其中T是具体类型)。 使用T &&的右值引用只能绑定右值; 使用constT&的左值可以绑定左值和右值; 命名的右值引用,会将其视为左值。
本回答被网友采纳一、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++里的难点,多练多思考吧。
本回答被提问者采纳你是指这样?:
char *str = "Hello World!";