6.1C++string类型变量的定义以及输⼊与输出
总结:
  在C++中提供了⼀个型的内建数据类型string,该数据类型可以替代C语⾔中char数组。
  与C风格的char型数组不同,string类型的变量结尾是没有 ’\0’ 的。
  我们可以通过s变量来调⽤length函数,从⽽返回s变量的长度。
  转换函数c_str,该函数将string类型的变量转换为⼀个const的字符串数组的指针。
  在C++中,在输⼊输出⽅⾯,我们可以像对待普通变量那样对待string类型变量,其输⼊输出仍然可以⽤输⼊输出操作符进⾏处理。
  输⼊操作符是默认忽略空格的,当遇到空格时就开始存储字符串。
在C++中提供了⼀个型的内建数据类型string,该数据类型可以替代C语⾔中char数组。需要使⽤string数据类型时则需要在程序中包含头⽂件string。string类型处理起来会⽐较⽅便,下⾯我们将逐⼀介绍该类型的功能。
例1:
#include <iostream>
#include <string>
using namespace std;
int main()
{
string s1;
string s2 = "string";
string s3 = s2;
string s4 (10, 's');
return0;
}
在本例中介绍了⼏种定义string类型变量的⽅法,变量s1只是定义但是没有进⾏初始化,系统会将默认值赋给s1,默认值是“”(空字符串)。变量s2在定义的时候就被初始化为了"string",与C风格的char型数组不同,string类型的变量结尾是没有 ’\0’ 的,string类型的本质是⼀个string类,⽽我们定义的变量则是⼀个个的string类的对象。变量s3在定义的时候直接⽤s2进⾏初始化了,因此s3的内容也是"string"。变量s4初始化为10个‘s’字符组成的字符串,也即“ssssssssss”。
从例1中我们也可以看出string类型变量可以直接通过赋值操作符“=”进⾏赋值。string类型变量可以⽤string类型变量或C风格字符串进⾏赋值。如s2则是⽤⼀个字符串常量进⾏初始化的,⽽s3变量则是通过s2变量进⾏初始化。
与C风格的字符数组不同,当我们需要知道字符串长度时,string类为我们提供了length函数。如下⾯例2所⽰,我们可以通过s变量来调⽤length函数,从⽽返回s变量的长度。因为string类型的变量末尾是没有 ’\0’ 字符的,因此其返回值就是变量的真实长度,⽽不是长度+1。
例2:
string s = "string";
int len = s.length();
转换为 char 数组字符串
虽然C++提供了string类型来替代C语⾔中的字符数组形式的字符串,但是我们在程序设计过程中还是不可避免地会碰到需要⽤字符数组形式字符串的地⽅。为此,系统为我们提供了⼀个转换函数c_str,该函数将string类型的变量转换为⼀个const的字符串数组的指针。
例1:
string filename = "";
ifstream in;
in.open(filename.c_str());
在本例中我们为了打开⽂件的函数open,因此必须将string类型变量转换为字符串指针。
字符串转数组charC++ string类型变量的输⼊与输出
既然新增string类型变量,则不可避免的需要涉及到string类型变量的输⼊与输出操作。在C++中,在输
⼊输出⽅⾯,我们可以像对待普通变量那样对待string类型变量,其输⼊输出仍然可以⽤输⼊输出操作符进⾏处理。
例1:
#include <iostream>
#include <string>
using namespace std;
int main()
{
string s;
cin>>s;
cout<<s<<endl;
return0;
}
如本例所⽰,输⼊⼀个字符串,然后再将输⼊的字符串输出。运⾏程序结果如下:
string string↙
string
这个例⼦的运⾏结果输出只是⼀个string,⽽我们输⼊的是两个string,并且中间⽤空格隔开了。其实问题就出现在空格上,输⼊操作符是默认忽略空格的,当遇到空格时就开始存储字符串。因此后⾯⼀个输⼊的string没有被存储进去。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。