【C++基础】C++中的字符串

简介: 【C++基础】C++中的字符串

C++支持两种字符串,一种是从C继承过来的C-字符串;另一种是string。下面对它们进行简要的分析。


【C-字符串】

1、 【简介】C-串是以一个全0位(整数0)字节作为结束符的字符序列。该全0字节既是8位的整数0,也是ASCII码的0。

(1)【空间长度】字符串长度加1,因为它末尾有一个0作为结束符

(2)【类型】C-串的类型为char*型


2、 字符指针与字符数组

(1)char* str=”Hello!”;

(2)str是字符指针变量,*str是字符指针变量的间接引用

(3)【输出】

输出字符指针就是输出C-串,输出所有字符,直到遇到0

输出字符指针的间接引用,就是输出单个字符

(4)比较:C-串字符是字符指针,因此,比较两个【内容相同】的C-串时,会它们的空间位置不相同而不同

C库函数中,专门设计了C-串的比较函数【strcmp】来用于比较

(5)复制:C-串字符数组是不能简单复制的

char a1[6]=”hello”;
char a2[6]=a1; //错误

C库函数设计了【strcpy】函数用于C-串复制

注:C-库函数在string.h的头文件中


【string】

1.【简介】string是一种自定义的类型,它可以方便地执行C-串不能直接执行的一切操作

2.【处理空间】string的处理空间是自动的,需要多少,用多少;它不用担心指针脱离;它可从C-串转换得到,还可从内部“提炼”出C-串

3.string与C-串有良好的亲和性,C-串可以直接赋值给创建中的和已经存在的string变量



【字符串的输入/输出】

1.输入:

(1)循环读入方式:运用“cin>>”

for(string s;cin>>s;)
cout<<s<<” ”;
cout<<endl;

或者

1. for(char a[10];cin>>a;)
2. cout<<a<<” ”;
3. cout<<endl;

注:-“cin>>”的读入方式总是将前导的空格(空格、回车、水平或垂直制表符等)过滤掉,当遇到空格时结束本次输入

-“cin>>”不能辨别空格与回车的差异



(2)通过getline逐行输入:

string s;
getline(cin,s);
cout<<s<<endl;

或者

char a[40];
cin.getline(a,40);
cout<<a<<endl;

注:getline总是将行末的回车符过滤掉

(3)逐个字符输入

for(char ch;(ch=cin.get())!=’\n’;)
cout<<char(ch);
cout<<endl;

【string流】

目录
相关文章
|
19天前
|
存储 算法 编译器
【C++ 字符数组的模板特化】面向字符串的C++模板特化:理解与实践
【C++ 字符数组的模板特化】面向字符串的C++模板特化:理解与实践
62 1
|
14天前
|
数据处理 C++
C++程序字符串流
C++程序字符串流
22 2
|
19天前
|
存储 C++ 索引
C++ 字符串完全指南:学习基础知识到掌握高级应用技巧
C++的字符串使用`string`类处理,如`string greeting = &quot;Hello&quot;`。字符串连接可通过`+`或`append()`函数实现。访问字符使用索引,如`myString[0]`。`length()`或`size()`可获取长度。`getline()`用于读取整行输入。注意转义字符如`\\&quot;`用于在字符串中嵌入双引号。使用`cin`读取字符串时,空格会终止输入,而`getline()`能读取整行。
28 0
|
1天前
|
C++ 安全
高效遍历:C++中分隔字符串单词的3种方法详解与实例
拷贝并交换(Copy-and-Swap)是C++中实现赋值操作符和异常安全拷贝构造函数的技巧。它涉及创建临时对象,使用拷贝构造函数,然后交换数据以确保安全。C++11之前的策略在此后及C++11引入的移动语义和右值引用下仍有效,但后者提供了更高效的实现方式。
|
3天前
|
C++ 索引
C++中字符串常用操作
C++中字符串常用操作
6 2
|
3天前
|
对象存储 C++ 索引
C++ 字符串操作的技术性探讨
C++ 字符串操作的技术性探讨
7 1
|
7天前
|
存储 安全 C语言
c++字符串
c++字符串
16 1
|
10天前
|
Java C++ Python
C++ 使用getline()从文件中读取一行字符串
`getline()` 是 C++ 中 `istream` 类的一个方法,被 `fstream` 和 `ifstream` 继承,用于从文件中读取一行字符串。它有两种语法:一种是从文件读取 `bufSize-1` 个字符到 `buf` 直到 `\n`,另一种是读到指定分隔符 `delim`。如果文件中的字符数量超过 `bufSize`,会导致读取失败。示例代码展示了如何使用 `getline()` 读取和打印文件内容。通过循环调用 `getline()`,可以连续读取文件的多行数据。
18 0
|
13天前
|
存储 编译器 程序员
C++中的宏定义和字符串字面值的区别
C++中的宏定义和字符串字面值的区别
|
14天前
|
存储 C++
C++程序中的字符串与指针
C++程序中的字符串与指针
12 2