参考:http://www.weixueyuan.net/view/6389.html

总结:

  在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 (, 's');
return ;
}

在本例中介绍了几种定义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 = "input.txt";
ifstream in;
in.open(filename.c_str());

在本例中我们为了打开文件的函数open,因此必须将string类型变量转换为字符串指针。

 

C++ string类型变量的输入与输出

既然新增string类型变量,则不可避免的需要涉及到string类型变量的输入与输出操作。在C++中,在输入输出方面,我们可以像对待普通变量那样对待string类型变量,其输入输出仍然可以用输入输出操作符进行处理。

例1:

#include <iostream>
#include <string> using namespace std; int main()
{
string s;
cin>>s;
cout<<s<<endl;
return ;
}

如本例所示,输入一个字符串,然后再将输入的字符串输出。运行程序结果如下:
string string↙
string

这个例子的运行结果输出只是一个string,而我们输入的是两个string,并且中间用空格隔开了。其实问题就出现在空格上,输入操作符是默认忽略空格的,当遇到空格时就开始存储字符串。因此后面一个输入的string没有被存储进去。

 

6.1 C++ string类型变量的定义以及输入与输出的更多相关文章

  1. java中String类型变量的赋值问题

    第一节 String类型的方法参数 运行下面这段代码,其结果是什么? package com.test; public class Example { String str = new String( ...

  2. 【C语言入门教程】7.1 结构体类型变量的定义和引用

    前面学习了变量和数组这些简单的数据结构,它们的特点是必须使用规定的数据类型.例如数组被定义为整型后,它的所有存储单元都是由整型构成.现实生活中某一类事物的共同属性可能是由不同的数据类型组成的集合,或者 ...

  3. typedef std::string AddressLines[4]定义了一个string数组,大小为4

    int main() { typedef std::]; std::]; std::string *pal1 = new AddressLines; delete [] pal; delete [] ...

  4. c++ string类型的定义及方法

    1.c++ 有两种风格的字符串形式  c风格字符串  定义及初始化  char a[]={'h','e','l','l','o','\0'}  或者  char a[]="hello&quo ...

  5. Eclipse的Jar包解压出System.js里String与Boolean定义分号可有可无吗?

    Eclipse的Jar包解压出System.js里String与Boolean定义分号可有可无吗? org.eclipse.wst.jsdt.core_1.3.300.v201410221502\li ...

  6. Java中关于Integer, String 类型变量 == 与 equals 判断的坑

    == 与 equals()的联系: ==: 我们都知道Java中 == 对用于基础数据类型(byte, short, int, long, float, double, boolean, char)判 ...

  7. String类型变量的使用

    1.String属于引用数据类型,翻译为:字符串 2.声明String类型变量时,使用一对"" 3.String可以和8种基本数据类型变量做运算,且运算只能是连接运算:+ 4.运算 ...

  8. 【2017-2-17】VS基本应用及C#基础第一节(定义变量、输入及输出)

    一VS基本应用 (一)新建项目 新建项目可有多种方法例如: 1.  在VS起始页面建立新项目 2.  在集成环境中,通过"文件"/"新建"/"项目&q ...

  9. 1.java.io包中定义了多个流类型来实现输入和输出功能,

    1.java.io包中定义了多个流类型来实现输入和输出功能,可以从不同的角度对其进行分 类,按功能分为:(C),如果为读取的内容进行处理后再输出,需要使用下列哪种流?(G)   A.输入流和输出流 B ...

随机推荐

  1. Docker入门(CentOS7)

    1.docker安装yum -y install bash-completion     #tab键补齐包yum install net-tools -yyum -y install wgetwget ...

  2. PCM数据格式

    PCM数据格式          1. 音频简介 经常见到这样的描述: 44100HZ 16bit stereo 或者 22050HZ 8bit mono 等等. 44100HZ 16bit ster ...

  3. Vue.js简单的状态管理和 Vuex的几个核心概念使用。

    由于状态零散地分布在许多组件和组件之间的交互中,大型应用复杂度也经常逐渐增长. 如果多层组件嵌套使用,传递prop,和事件emit.都很不方便. 不方便对数据的修改进行历史记录.影响后续的调试! 为了 ...

  4. uva11609

    以三个人组队为例,3组合是:C(3,0)=1,3,3,1.还有队长的选择.有 1*0,3*1,3*2,1*3种. 组合数:            1      3        3        1 ...

  5. ASP.Net MVC多语言

    .NET MVC 多语言网站 通过浏览器语言首选项改变MVC的语言,通过浏览器语言选项,修改脚本语言. 一.添加资源文件 1.添加App_GlobalResources文件夹. 2.添加默认的资源文件 ...

  6. git部署

    1. 自动部署原理 先讲实现方法和原理.Git服务和仓库都是在服务器上的,服务器上的Web目录和本地都有完整的代码.Git有个叫hook的机制,可以在代码更新时执行回调(执行一段shell).一般执行 ...

  7. 并查集 牛客练习赛41 C抓捕盗窃犯

    题目链接 :https://ac.nowcoder.com/acm/contest/373/C 题意,初始每一个城市都有一伙盗贼,没过一个时刻盗贼就会逃窜到另一个城市,你可以在m个城市设置监察站,会逮 ...

  8. bzoj4176. Lucas的数论 杜教筛

    题意:求\(\sum_{i=1}^n\sum_{j=1}^nd(ij),d是约数个数函数\) 题解:首先有一个结论\(d(ij)=\sum_{x|i}\sum_{y|j}[(i,j)==1]\) 那么 ...

  9. python中for循环的底层实现机制 迭代

    在python中,存在2种循环方式:for循环和while循环. while循环的实现很简单, 其本质就是一个条件语句,自定义条件,当条件满足的时候,不断执行while代码块. 但是for循环,究竟是 ...

  10. 【Linux】shell学习之sed

    sed替换命令 使用该命令,可以将特定字符串或匹配的规则表达式用另一个字符串替换. sed 's/88/--/' filename 将filename每行第一次出现的88用字符串--替换,然后将该文件 ...