C++入门学习——标准库 string 类的使用

在 C++ 中,为了方便处理字符串,引入了 string 类。string 类型支持长度可变的字符串。

使用 string 之前,必须包含相应的头文件,string 属于 std 命名域的,因此需要通过命名限定:

#include <string>

using std::string; //using namespace std;

string对象的定义和初始化

使用示例如下:

#include <iostream>
#include <string>

using std::cout;
using std::endl;
using std::string;

int main(int argc, char *argv[])
{
	string s1 = "mike";
	cout << "s1 = " << s1 << endl; //s1 = mike

	string s2(s1); //将 s2 初始化为 s1 的一个副本
	cout << "s2 = " << s2 << endl; // s2 = mike

	string s3("jiang"); //将 s3 初始化为 "mike"
	cout << "s3 = " << s3 << endl; // s3 = jiang

	string s4(10, 'a'); // s4 的值为 10 个 'a'
	cout << "s4 = " << s4 << endl; //s1 = mike

	return 0;
}

运行结果如下:

string 对象常用操作

示例代码如下:

#include <iostream>
#include <string>

using std::cout;
using std::endl;
using std::string;

int main(int argc, char *argv[])
{
	string s1 = "mike";

	// 如果s1为空串,则返回true,否则返回false
	if( true == s1.empty() ){
		cout << "s1 is empty\n";
	}else{
		cout << "s1 is no empty\n";
	}

	// 字符串的大小, s1.size()等价于s1.length()
	cout << "len = " << s1.size() << endl;

	//返回 s1 最大容量
	cout << "max_size = " << s1.max_size() << endl;

	//取出每一个字符
	for(int i = 0; i < s1.size(); i++){
		//s1[i]等价于s1.at(i)
		cout << i << " = " << s1[i] << endl;
	}

	string s2 = " jiang";
	cout << "s1 + s2 = " << s1+s2 << endl;

	// c++ string 和 C char * 相互转换
	// string to const char *
	const char *str = s1.c_str();
	cout << "c_str = " << str << endl;

	const char *data = s2.data();
	cout << "data = " << data << endl;

	// char * to string
	const char *buf = "hello, c++";
	//string my_str = string(buf);
	string my_str = buf;
	cout << "my_str = " << my_str << endl;

	//s1和s2字符串交换
	s1 = "mike";
	s2 = "jiang";
	s1.swap(s2);
	cout << "s1 = " << s1 << ", s2 = " << s2 << endl;

	s1.clear();
	s1 = "mike";
	cout << "s1 = " << s1 << endl;

	s1 = "mikejiang";
	//取出 s1 从 2 开始后的 4 个字符,位置从0开始
	s2 = s1.substr(2, 4);
	cout << "s2 = " << s2 << endl;

	s1 = "mikejiang";
	//删除 s1 从 2 开始后的 4 个字符,位置从0开始
	s2 = s1.erase(2, 4);
	cout << "s2 = " << s2 << endl;

	s1 = "mike";
	//s1 从 4 开始(位置从0开始),插入"jiang"字符串
	s2 = s1.insert(4, "jiang");
	cout << "s2 = " << s2 << endl;

	s1="mikejiang";
	//删除s1从4开始的5个字符,然后在5位置处插入"tyson"
	s2 = s1.replace(4, 5, "tyson");
	cout << "s2 = " << s2 << endl;

	s1="mikejiang";
	//查找字符串"j"在s1中的位置(位置从0开始)
	int n = s1.find("j");
	cout << "n = " << n << endl;

	return 0;
}

运行结果如下:

迭代器操作 string 对象

string 类提供了向前和向后遍历的迭代器 iterator,迭代器提供了访问各个字符的语法,类似于指针操作,迭代器不检查范围。用 string::iterator 或 string::const_iterator 声明迭代器变量,const_iterator 不允许改变迭代的内容。

示例代码如下:

#include <iostream>
#include <string>

using std::cout;
using std::endl;
using std::string;

int main(int argc, char *argv[])
{
	string s="mike"; //初始化为"mike"

	//通过迭代器把所有字符元素的值打印出来
	string::const_iterator t;
	for( t=s.begin(); t!=s.end(); t++){
		cout<< *t << ", ";
	}
	cout << endl;

	string::iterator it;
	//通过迭代器给所有字符元素赋值为'a'
	for( it=s.begin(); it!=s.end(); it++){
		*it = 'a';
	}

	cout << endl;
	//通过迭代器把所有元素的值打印出来
	for( it=s.begin(); it!=s.end(); it++){
		cout<< *it << ", ";
	}
	cout << endl;

	s = "mikejiang";
	it = s.begin(); //返回指string最开始位置元素的指针(迭代器)
	//删除指针it+1指向位置的元素,返回指向下一个元素位置的指针(迭代器)
	s.erase(it+1); // remove "i"

	cout << endl << "after erase:\n";
	//通过迭代器把所有元素的值打印出来
	for( it=s.begin(); it!=s.end(); it++){
		cout<< *it << ", ";
	}
	cout << endl;

	s = "mmmmmm";
	it = s.begin();
	//在位置it后插入3个'a'
	s.insert(it, 3, 'a');

	cout << endl << "after insert:\n";
	//通过迭代器把所有元素的值打印出来
	for( it=s.begin(); it!=s.end(); it++){
		cout<< *it << ", ";
	}
	cout << endl;

	return 0;
}

运行结果如下:

本教程示例代码下载请点此链接:http://download.csdn.net/detail/tennysonsky/8896441

版权声明:本博客文章,大多是本人整理编写,或在网络中收集,转载请注明出处!!

时间: 2024-10-14 23:22:21

C++入门学习——标准库 string 类的使用的相关文章

实现C++标准库string类的简单版本

后续待更新. 1 #ifndef STRING_H 2 #define STRING_H 3 4 #include <cassert> 5 #include <utility> 6 #include <iostream> 7 8 namespace jz 9 { 10 11 /************************************************************************/ 12 /* 重新实现C风格字符串处理函数 */

C++学习笔记(7)标准库string类

一.初始化string对象: 直接初始化:string a("value"); 拷贝初始化:string a = "value"; 二.读写string对象 注:cin会忽略头尾空白处,保留空白符需要使用getline: empty函数判断是否为空,size函数计算字符串长度. 不能把多个字面值直接相加赋值给string对象,字符串字面值不是string对象. 三.范围for语句的使用 string str("some,string!!!");

【C++ Primer每日刷】之三 标准库 string 类型

标准库 string 类型 string 类型支持长度可变的字符串,C++ 标准库将负责管理与存储字符相关的内存,以及提供各种有用的操作.标准库string 类型的目的就是满足对字符串的一般应用. 与其他的标准库类型一样,用户程序要使用 string 类型对象,必须包含相关头文件.如果提供了合适的 using 声明,那么编写出来的程序将会变得简短些: #include <string> using std::string; 1.1 string 对象的定义和初始化 string 标准库支持几个

C++ 标准库异常类

转自:http://blog.csdn.net/zhq651/article/details/8425579 exception C++标准库异常类继承层次中的基类为exception,其定义在exception头文件中,它是C++标准库所有函数抛出异常的基类,exception的接口定义如下: namespace std { class exception { public: exception() throw(); //不抛出任何异常 exception(const exception& e

一、Python的标准库String

一.Python的标准库String 1.查看武器 a. help(type()) name = "jane"print(help(type(name))) b. capitalize() name = "jane" print(name.capitalize()) 效果:Jane c. center() name = "jane" print(name.center(50, '-')) 效果:-----------------------jan

标准库string类型用法(一)

标准库string类型 1. string对象的定义与初始化 string s1;                             默认构造函数,s1为空串 string s2(s1);                      将s2初始化为s1的一个副本 string s3("nwpu");            将s3初始化为一个字符串字面值副本 string s4(n, 'b');                 将s4初始化为字符‘b’的n个副本 2. string对

标准库string类型

string类型支持长度可变的字符串,C++标准库将负责管理与存储字符相关的内存,以及提供各种有用的操作.标准库string类型的目的就是满足对字符串的一般应用. 本文地址:http://www.cnblogs.com/archimedes/p/cpp-string.html,转载请注明源地址. 引入头文件#include<string> 1.string对象的定义和初始化 string标准库支持几个构造函数,构造函数是一个特殊成员函数 一下是几种初试化string对象的方式 string s

C 标准库 - &lt;string.h&gt;

C 标准库 - <string.h> 简介 string .h 头文件定义了一个变量类型.一个宏和各种操作字符数组的函数. 库变量 下面是头文件 string.h 中定义的变量类型: 序号 变量 & 描述 1 size_t 这是无符号整数类型,它是 sizeof 关键字的结果. 库宏 下面是头文件 string.h 中定义的宏: 序号 宏 & 描述 1 NULL这个宏是一个空指针常量的值. 库函数 下面是头文件 string.h 中定义的函数: 序号 函数 & 描述 1

C++入门学习——标准模板库之vector

vector(向量容器),是 C++ 中十分有用一个容器.vector 之所以被认为是一个容器,是因为它能够像容器一样存放各种类型的对象,简单地说,vector 是一个能够存放任意类型(类型可以是int, double, string, 还可以是类)的动态数组,能够增加和压缩数据. 使用 vector 之前,必须包含相应的头文件,vector 属于 std 命名域的,因此需要通过命名限定: #include <vector> using std::vector; //using namespa