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;

或者

for(char a[10];cin>>a;)

cout<<a<<” ”;

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流】

C++中的字符串

时间: 2024-10-17 07:13:12

C++中的字符串的相关文章

Java中的字符串常量池

最近做到一个题目: 问题:String str = new String("abc"),"abc"在内存中是怎么分配的?    答案是:堆,字符串常量区. 题目考查的为Java中的字符串常量池和JVM运行时数据区的相关概念."abc"为字面量对象,其存储在堆内存中.而字符串常量池则存储的是字符串对象的一个引用. Java中的字符串常量池 Java中字符串对象创建有两种形式,一种为字面量形式,如String str = "droid&qu

关于Delphi中的字符串的详细分析

关于Delphi中的字符串的详细分析 只是浅浅的解析下,让大家可以快速的理解字符串. 其中的所有代码均在Delphi7下测试通过. Delphi 4,5,6,7中有字符串类型包括了: 短字符串(Short String) 长字符串(Long String) 宽字符串(Wide String) 零结尾字符串(Null-Terminated String).PChar和字符数组 1.短字符串(Short String) 固 定长度,最大字符数个数为255,短字符串也成为长度字节(Length-byt

android中对字符串的复数处理方法

如果你开发的应用覆盖多个国家,在处理数量的问题的时候,一定会碰到根据不同的数量使用不同的字符串. 不同的语言在处理数量对待方式不一样,这种情况非常常见,举一个简单的例子说明下中文和英文在修饰数量上的差异: 在中文里,1本书,2本书,...... n本书, 在英文里,1 book, 2 books, ...... n books.然而,即使在0的情况下,也要用books, 即0 books. 中文在对待单复数情况下并没有作区分,而英文就做了区别.除了英文之外,很多语言都做了有类似的区别.另外在有些

Java中的字符串

作者:禅楼望月(http://www.cnblogs.com/yaoyinglong/) 1.字符串可以被GC回收了 我们之前在表达式的陷阱中就说到"对于Java程序中的字符直接量,JVM会使用一个字符串池来保护他们:当第一次使用某个字符串直接时,JVM会将它们放入字符串池进行缓存."在jdk1.7之前HotSpot将该字符串常量池放在永久代中,所以当初我们还说"在一般情况下,字符串缓冲池中字符串对象不会被垃圾回收",但是jdk1.7以后HotSpot就将字符串常量

linux sed 批量替换多个文件中的字符串

转载:http://blog.csdn.net/kauu/article/details/1757325 一.linux sed 批量替换多个文件中的字符串 sed -i "s/oldstring/newstring/g" `grep oldstring -rl yourdir` 例如:替换/home下所有文件中的www.bcak.com.cn为bcak.com.cn sed -i "s/www.bcak.com.cn/bcak.com.cn/g" `grep ww

Android中资源文件中的字符串数组string-array简单用法

在Android中,用string-array是一种简单的提取XML资源文件数据的方法. 例子如下: 把相应的数据放到values文件夹的strings.xml文件里,或是其他自定义的xml中都可以,以下操作方法相同. <?xml version="1.0" encoding="utf-8"?> <resources> <string-array name="sports"> <item>足球<

搜索文件或目录中包含字符串的文件 java小程序

package com.ruishenh.spring.test; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.util.Enumeration; import java.

c#中的字符串查找函数

indexOf()方法,查找某字符串在一个字符串内的位置,没有则返回-1string aa="abcdef";int a=aa.indexOf("bc");//a会等于1int b=aa.indexOf("a");//b会等于0int c=aa.indexOf("g");c会等于-1所以你只要判断返回出来的int值是不是小于0就知道这个字符串里有没有包含指定的另一个字符串 c#中的字符串查找函数,布布扣,bubuko.com

C++中对字符串进行插入、替换、删除操作

#include <iostream> #include <string> using std::cout; using std::endl; using std::string; int main(void){ string str1="We can insert a string"; string str2="a str into "; //在字符串指定位置前面插入指定字符串 cout <<str1.insert(14,str

javascript中对字符串的操作总结

没听过一句话吗?程序员的世界,不处理字符串就是处理数组.这是群里的一位前辈和我说的,显然这和我之前理解的DOM是javascript的核心的不同的,看了几个面试题的内容,感觉前辈说的话非常的有道理,因此总结下,javascript中对字符串的操作. String类型 首先字符串类型是基本类型,但是在这里我们所说的是字符串的对象包装类型.因为只有引用类型才会有属性和方法.实际上每读取一个基本类型的同时都会创建一个对应的基本包装类型,从而让我们能够调用一些方法来操作数据.1.charAt() 和 c