c/c++ string

string類的定義、操做。ios

#include<iostream>
#include<string>
using namespace std;

int main()
{
	// 4 declare 
	string s1;			//default
	string s2( s1 );
	string s3( "hello" );
	string s4( 9, 's' );
	
	//read and write
	string s_1, s_2;
	cin>>s_1>>s_2;			//igore blank in head, find blank in tail will end;
	cout<<s_1<<endl;

	//讀入未知數目的文本
	string word;
	while( cin>>word )		//read until end-of -file
	{
		cout<<word<<endl;
		if( word == "exit" )
		{
			cout<<"exit success"<<endl;
			break;
		}
	}

	//用getline讀取整行文本,getline不會保存換行符
	string line;
	while( getline( cin, line ) )
	{
		cout<<line<<endl;
		if( line == "exit" )
		{
			cout<<"exit success"<<endl;
			break;
		}
	}

	//string.size() and string.empty
	string str_size;
	cout<<"test string size"<<endl;
	cin>>str_size;
	if( str_size.empty() )
		cout<<"string is empty"<<endl;
	else
		cout<<"string is not empty"<<endl;
	
	//配套類型string::size_type實現與及其無關;int 型變量容易出錯,不便移植;unsigned 可用於string::size_type可用的地方。
	//關係操做符==、+=、<、<=、>、>=,使用字典順序排序
	string big = "big", small = "small", substr = "hello",phrase = "hello world";		//substr 小於 phrase

	//string賦值,有效率上的問題
	string str1, str2 = "value assignment come with efficent problem";
	str1 = str2;

	//string對象相加
	str2 = "c plus plus";
	str1 = "hell";
	str2 += str1;

	//和字符串字面值的鏈接,必須用string類型做爲左值
	str1 = str2 + "hello world" + "!!!";
	
	//下標操做string單個字符
	for( string::size_type ix = 0; ix != str1.size(); ix++ )
	{
		cout<< str1[ix] <<endl;
		str1[ix] = '*';
	}

	//下標值計算
	str1[2*1] = 'a';
	cout<<str1<<endl<<"下標計算"<<endl;
	
	//string中單個字符處理
	cout<<"單個字符的處理"<<endl;
	if( ispunct(str1[2]) )
		cout<<"str1[2] 是一個標點"<<endl;

	string s;
	cout<<s[0]<<endl;		//越界

	return 0;
}

操做單個字符時使用cctype定義的函數,知足條件則爲true:git

isalnum(c)  是字母或數字函數

isalpha(c)  是字母spa

iscntrl(c)  是控制字符對象

isdigit(c)  是數字blog

isgraph(c)  不是空格,可打印排序

islower(c)  小寫字母ci

isprint(c)  可打印字符字符串

ispunct(c)  標點符號get

isspace(c)  空白字符

isupper(c)  大寫字母

isxdigit(c)  十六進制數

tolower(c)  是大寫字母時返回小寫字母,不然返回c

toupper(c)  是小寫字母時返回大寫字母,不然返回c

相關文章
相關標籤/搜索