程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> C++入門學習——標准庫 string 類的使用

C++入門學習——標准庫 string 類的使用

編輯:C++入門知識

C++入門學習——標准庫 string 類的使用


在 C++ 中,為了方便處理字符串,引入了 string 類。string 類型支持長度可變的字符串。

 

使用 string 之前,必須包含相應的頭文件,string 屬於 std 命名域的,因此需要通過命名限定:

#include
using std::string; //using namespace std;

 

string對象的定義和初始化

\

 

使用示例如下:

 

#include 
#include 

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 
#include 

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
;
	}else{
		cout << s1 is no empty
;
	}
	
	// 字符串的大小, 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 
#include 

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:
;
	//通過迭代器把所有元素的值打印出來
	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:
;
	//通過迭代器把所有元素的值打印出來
	for( it=s.begin(); it!=s.end(); it++){
		cout<< *it << , ;
	}
	cout << endl;
	
	return 0;
}

運行結果如下:

 

\

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved