6.1 C++ string类型变量的定义以及输入与输出
参考:http://www.weixueyuan.net/view/6389.html
总结:
在C++中提供了一个型的内建数据类型string,该数据类型可以替代C语言中char数组。
与C风格的char型数组不同,string类型的变量结尾是没有 ’\0’ 的。
我们可以通过s变量来调用length函数,从而返回s变量的长度。
转换函数c_str,该函数将string类型的变量转换为一个const的字符串数组的指针。
在C++中,在输入输出方面,我们可以像对待普通变量那样对待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类型变量的输入与输出
例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类型变量的定义以及输入与输出的更多相关文章
- java中String类型变量的赋值问题
第一节 String类型的方法参数 运行下面这段代码,其结果是什么? package com.test; public class Example { String str = new String( ...
- 【C语言入门教程】7.1 结构体类型变量的定义和引用
前面学习了变量和数组这些简单的数据结构,它们的特点是必须使用规定的数据类型.例如数组被定义为整型后,它的所有存储单元都是由整型构成.现实生活中某一类事物的共同属性可能是由不同的数据类型组成的集合,或者 ...
- typedef std::string AddressLines[4]定义了一个string数组,大小为4
int main() { typedef std::]; std::]; std::string *pal1 = new AddressLines; delete [] pal; delete [] ...
- c++ string类型的定义及方法
1.c++ 有两种风格的字符串形式 c风格字符串 定义及初始化 char a[]={'h','e','l','l','o','\0'} 或者 char a[]="hello&quo ...
- Eclipse的Jar包解压出System.js里String与Boolean定义分号可有可无吗?
Eclipse的Jar包解压出System.js里String与Boolean定义分号可有可无吗? org.eclipse.wst.jsdt.core_1.3.300.v201410221502\li ...
- Java中关于Integer, String 类型变量 == 与 equals 判断的坑
== 与 equals()的联系: ==: 我们都知道Java中 == 对用于基础数据类型(byte, short, int, long, float, double, boolean, char)判 ...
- String类型变量的使用
1.String属于引用数据类型,翻译为:字符串 2.声明String类型变量时,使用一对"" 3.String可以和8种基本数据类型变量做运算,且运算只能是连接运算:+ 4.运算 ...
- 【2017-2-17】VS基本应用及C#基础第一节(定义变量、输入及输出)
一VS基本应用 (一)新建项目 新建项目可有多种方法例如: 1. 在VS起始页面建立新项目 2. 在集成环境中,通过"文件"/"新建"/"项目&q ...
- 1.java.io包中定义了多个流类型来实现输入和输出功能,
1.java.io包中定义了多个流类型来实现输入和输出功能,可以从不同的角度对其进行分 类,按功能分为:(C),如果为读取的内容进行处理后再输出,需要使用下列哪种流?(G) A.输入流和输出流 B ...
随机推荐
- makefile 里的vpath
https://www.cmcrossroads.com/article/basics-vpath-and-vpath Only missing prerequisites matching the ...
- spring cloud: zuul(五): prefix访问前缀, ignoredServices粗粒度访问, yml不起作用
路由的前缀 - 问题 zuul.prefix: 我们可以指定一个全局的前缀 strip-prefix: 是否将这个代理前缀去掉 zuul: prefix: /ecom 我的eureka:http:// ...
- <转载>MacOS下安装小米SQL优化工具soar
原文链接:https://www.cnblogs.com/QuestionsZhang/p/10326105.html 1 下载源码包 赋予权限 wget https://github.com/Xia ...
- You Don't Know JS: this & Object Prototypes( 第5章 Prototypes)
qu上章提到过[[prototype]] chain, 本章详细分析 ⚠️所有试图模仿类复制的行为,如上章提到的mixins的变种,完全规避了[[Prototype]] chain机制,本章会谈到这方 ...
- vue select的change事件,将点击过的城市名存在数组中,下次调用不需要再调用接口
<template> <div id="body" class="application" v-show="show" v ...
- 【洛谷p1106】删数问题
(洛谷t2755暂时过不去了) 删数问题[传送门] 洛谷算法标签: emmmm……删数问题又牵扯到了字符串.因为毕竟高精度的数240位呢!要是输入一个整型,要码240行来求出每一位……怕是还没求出来就 ...
- python中类的概念
在Python中,所有数据类型都可以视为对象,也可以自定义对象.自定义的对象即面向对象中的类(Class)的概念. class Student(object): def __init__(self, ...
- iOS block 机制
本文要将block的以下机制,并配合具体代码详细描述: block 与 外部变量 block 的存储域:栈块.堆块.全局块 定义 块与函数类似,只不过是直接定义在另一个函数里,和定义它的那个函数共享同 ...
- 【转】js 对象按照键值(不分区大小写)排序,生成签名方法
客户需求小程序端用js生成签名,我们按照要求一步一步解决,并且将请求方法封装到一个utils.js里: 第一步:对关联数组按照键名做正序排序. 第二步:拼接字符串 第三步:将拼接的字符串加上私钥 第四 ...
- [LeetCode] 95. Unique Binary Search Trees II(给定一个数字n,返回所有二叉搜索树) ☆☆☆
Unique Binary Search Trees II leetcode java [LeetCode]Unique Binary Search Trees II 异构二叉查找树II Unique ...