C++学习36 string类和字符串
C++大大增强了对字符串的支持,除了可以使用C风格的字符串,还可以使用内置的数据类型 string。string 类处理起字符串来会方便很多,完全可以代替C语言中的 char 数组或 char 指针。
使用 string 类需要包含头文件 <string>,下面我们逐一介绍该类的功能。
string 的几种用法:
#include <iostream>
#include <string>
using namespace std;
int main(){
string s1;
string s2 = "c plus plus";
string s3 = s2;
string s4 (, 's');
return ;
}
本例介绍了几种定义 string 类型变量的方法。变量 s1 只是定义但没有初始化,编译器会将默认值赋给 s1,默认值是""(空字符串)。变量 s2 在定义的同时被初始化为"c plus plus"。与C风格的 char 字符串不同,string 类型的变量结尾没有 '\0',string 类型的本质是一个 string 类,而我们定义的变量则是一个个的 string 类的对象。变量 s3 在定义的时候直接用 s2 进行初始化,因此 s3 的内容也是"c plus plus"。变量 s4 被初始化为由 5 个 's' 字符组成的字符串,也就是 "sssss"。
从上面的代码可以看出,string 变量可以直接通过赋值操作符“=”进行赋值。string 变量也可以用C风格的字符串进行赋值,例如,s2 是用一个字符串常量进行初始化的,而 s3 则是通过 s2 变量进行初始化的。
与C风格的字符串不同,当我们需要知道字符串长度时,可以调用 string 类提供的 length() 函数。如下所示:
string s = "c plus plus";
int len = s.length();
cout<<len<<endl;
这里,变量 s 也是 string 类的对象,length() 是它的成员函数。由于 string 变量的末尾没有 '\0' 字符,所以 length() 返回的是字符串的真实长度,而不是长度 +1。
转换为 char 数组字符串
虽然C++提供了 string 类来替代C语言中的 char 数组形式的字符串,但在编程中有时必须要使用C风格的字符串,为此,string 类为我们提供了一个转换函数 c_str(),该函数能够将 string 变量转换为一个 const 字符串数组的形式,并将指向该数组的指针返回。请看下面的代码:
string filename = "input.txt";
ifstream in;
in.open(filename.c_str());
为了使用文件打开函数 open(),必须将 string 类型的变量转换为字符串数组。
string 字符串的输入输出
string 类重载了输入输出运算符,可以像对待普通变量那样对待 string 类型变量,也就是用“>>”进行输入,用“<<”进行输出。请看下面的代码:
#include <iostream>
#include <string>
using namespace std;
int main(){
string s;
cin>>s; //输入字符串
cout<<s<<endl; //输出字符串
return ;
}
虽然我们输入了两个由空格隔开的 "string",但是只输出了一个,这是因为输入运算符”>>“默认会忽略空格,遇到空格就认为输入结束,所以最后输入的 "string" 没有被存储到变量 s。
C++学习36 string类和字符串的更多相关文章
- Java的API及Object类、String类、字符串缓冲区
Java 的API 1.1定义 API: Application(应用) Programming(程序) Interface(接口) Java API就是JDK中提供给开发者使用的类,这些类将底层的代 ...
- java学习笔记 --- String类
一.定义 就是由多个字符组成的一串数据.也可以看成是一个字符数组. 注意: 1.字符串是常量:它们的值在创建之后不能更改.为什么? 意思就是说字符串确定了,就会在常量池中生成这个字符串. 所以说它的值 ...
- C++中String类的字符串分割实现
最近笔试,经常遇到需要对字符串进行快速分割的情景,主要是在处理输入的时候,而以前练习算法题或笔试,很多时候不用花啥时间考虑测试用例输入的问题.可是C++标准库里面没有像java的String类中提供的 ...
- java学习之String类
标签(空格分隔): String类 String 的概述 class StringDemo{ public static void main(String[] args){ String s1=&qu ...
- 100、Java中String类之字符串转为大写
01.代码如下: package TIANPAN; /** * 此处为文档注释 * * @author 田攀 微信382477247 */ public class TestDemo { public ...
- C++ string类取字符串的左右子串(以特定子串为分界限)
// Example3.cpp : 定义控制台应用程序的入口点. //以特定单词为分界,求取字符串的左右子串 #include "StdAfx.h" #include <st ...
- Java学习笔记——String类常用方法
所谓的字符串就是对数组的包装,所以字符串内容无法进行更改.String在JDK1.8以前保存的是字符数组:private final char value[]; 而在JDK1.9之后保存的是字节数组: ...
- string类自定义字符串替换函数replace
#include <iostream> #include <string> using namespace std; /* * 函数功能:将string字符串中的某些字符替换 ...
- 阶段1 语言基础+高级_1-3-Java语言高级_1-常用API_1_第5节 String类_2_字符串的构造方法和直接创建
string的构造方法 psvm创建main方法 把字节翻译成了小a小b小c.字符串的底层科室用的byte字节数组 Ctrl+鼠标左键点击string 这个byte就保存了字符串底层的字节数据 直接创 ...
随机推荐
- js字符串函数
JS自带函数concat将两个或多个字符的文本组合起来,返回一个新的字符串.var a = "hello";var b = ",world";var c = a ...
- wikioi 1204 寻找子串位置
/*======================================================================== 1204 寻找子串位置 题目描述 Descript ...
- 一、PHP MongoDB Windows7_64位安装与配置
NoSQL现在非常的流行了,由于我所在的公司环境问题,目前还用不到这种数据库,出于好奇,翻了翻资料,也算自学了一下.在此做下记录. 我的本机环境:APMServ5.2.6,PHP肯定就是5.2了. 1 ...
- angularjs实现IOS8自带计算器
最近看到一则面试题目,要求使用angularjs实现一个计算器,利用放假时间实现了一个仿iOS8风格的计算器,功能基本和iOS自带的计算器是一致的. 查看demo,接着给出实现过程. 首先创建angu ...
- Angular学习(7)- 模板2
示例: <!DOCTYPE html> <html ng-app="MyApp"> <head> <title>Study 8< ...
- LintCode "Delete Digits"
Greedy: remove earliest down-edge: like "54", "97". class Solution { public: /** ...
- PHP “Warning: session_start()...”、"correct (..\..\php5\Temp) in Unknown on line 0" 的解决方法
运行php的时候出现了一下警告: Warning: Unknown: open(D:/Program Files/php5/temp1\sess_l5b1a48m6kmb1g0t5cs33690v0, ...
- 黄聪:让WordPress主题支持语言本地化(使用poedit软件实现中文翻译功能)
如果你的WordPress主题要提交到WordPress官方主题库,使用者来自世界各地的多种语言,那么,你就要让你的WordPress主题支持语言本地化,方便使用者进行语言翻译和制作语言包. 让Wor ...
- 黄聪:wordpress/wp-includes目录文件
wp-includes/cache.php wp-includes/capabilities.php wp-includes/class-IXR.php:Incutio XML-RPC库.包括了 XM ...
- (C#) Lock - 将对象上锁,互斥多个线程,使同步。
C# Lock 原文:http://www.dotnetperls.com/lock Locking is essential in threaded programs. It restricts c ...