Error[8]: Undefined offset: 23, File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 121
File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 473, decode(

标准C++中的string类的用法总结 - xFreedom - 博客园

17.C++-string字符串类(详解) - 诺谦 - 博客园

c++ stringstream(老好用了) - 胡峻峥 - 博客园

​​​​​​C++中数字与字符串之间的转换 - 阿凡卢 - 博客园

1. 头文件
 #include 

2. 构造函数
string str;        //生成一个空字符串
 
string str ("ABC")  //等价于 str="ABC"

string str ("ABC", strlen) // 将"ABC"存到str里,最多存储前strlen个字节 string s("ABC",stridx,strlen) //将"ABC"的stridx位置,做为字符串开头,存到str里.且最多存储strlen个字节. string s(strlen, 'A') //存储strlen个'A'到str里

3. 常用成员函数
str1.assign("ABC");        //清空string串,然后设置string串为"ABC"
 
str1.length();                 //获取字符串长度
 
str1.size();            //获取字符串数量,等价于length()
 
str1.capacity();          //获取容量,容量包含了当前string里不必增加内存就能使用的字符数
 
str1.resize(10);           //表示设置当前string里的串大小,若设置大小大于当前串长度,则用字符\0来填充多余的.
str1.resize(10,char c);     //设置串大小,若设置大小大于当前串长度,则用字符c来填充多余的
 
str1.reserve(10);         //设置string里的串容量,不会填充数据.
str1.swap(str2);              //替换str1 和 str2 的字符串
 
str1.puch_back ('A');      //在str1末尾添加一个'A'字符,参数必须是字符形式
  
str1.append ("ABC");       //在str1末尾添加一个"ABC"字符串,参数必须是字符串形式
 
str1.insert (2,"ABC");       //在str1的下标为2的位置,插入"ABC"
 
str1.erase(2);             //删除下标为2的位置,比如: "ABCD" --> "AB"
 
str1.erase(2,1);              //从下标为2的位置删除1个,比如: "ABCD"  --> "ABD"
 
str1.clear();              //删除所有
 
str1.replace(2,4, "ABCD"); //从下标为2的位置,替换4个字节,为"ABCD"
 
str1.empty();            //判断为空, 为空返回true

4. 字符串流处理

C++ ostringstream、istringstream、stringstream 用法浅析_hellokandy的博客-CSDN博客_istringstream和stringstream

通过定义 ostringstream 和 istringstream 变量实现,头文件 #include


void ostringstream_test()
{
	//ostringstream 只支持 << 操作符
	std::ostringstream oss;
	oss << "this is test" << 123456;
 
	oss.str("");//清空之前的内容
	//oss.clear();//并不能清空内存
 
	//浮点数转换限制
	double tmp = 123.1234567890123;
	oss.precision(12);
	oss.setf(std::ios::fixed);//将浮点数的位数限定为小数点之后的位数
	oss << tmp;
 
	std::cout << oss.str() << "\r\n" << std::endl;
}
//  123.123456789012
void istringstream_test()
{
	//istringstream 只支持 >>  *** 作符
	std::string str = "welcome to china";
	std::istringstream iss(str);
 
	//把字符串中以空格隔开的内容提取出来
	std::string out;
	while(iss >> out)
	{
		std::cout << out << std::endl;
	}
	std::cout << "\r\n" << std::endl;
}
// welcome
// to
// china

void stringstream_test()
{
	//输入
	std::stringstream ss;
	ss << "hello this is kandy " << 123;
	std::cout << ss.str() << "\r\n" << std::endl;
 
	//输出
	std::string out;
	while(ss >> out)
	{
		std::cout << out.c_str() << std::endl;
	}
	std::cout << "\r\n" << std::endl;
}
// hello this is kandy 123

//hello
//this
//is 
//kandy
//123

5. string 实现字符串分割函数split()——4种方法

C++中string如何实现字符串分割函数split()——4种方法_我行我素,向往自由的博客-CSDN博客_c++ string 分割

使用getlint读取数据,选择接收的格式

// istream & getline(char* buf, int bufSize);	// 读到 \n 为止
istream & getline(char* buf, int bufSize, char delim); 
//读到 delim 字符为止
// \n 或 delim 都不会被读入 buf,但会被从文件输入流缓冲区中取走
void Stringsplit(string str,const const char split)
{
	istringstream iss(str);	// 输入流
	string token;			// 接收缓冲区
	while (getline(iss, token, split))	// 以split为分隔符
	{
		cout << token << endl; // 输出
	}
}

 

C++string类中substr()函数的使用方法_&Mr.Gong的博客-CSDN博客_c++ string substr方法

size_type find( const basic_string& str, size_type pos = 0 ) const;
// pos开始搜索的位置
basic_string substr( size_type pos = 0, size_type count = npos ) const;
// pos 起始位置,count 子串的长度————————复制字符串
void Stringsplit(const string& str, const char split, vector& res)
{
	if (str == "")		return;
	//在字符串末尾也加入分隔符,方便截取最后一段
	string strs = str + split;
	size_t pos = strs.find(split);
 
	// 若找不到内容则字符串搜索函数返回 npos
	while (pos != strs.npos)
	{
		string temp = strs.substr(0, pos);
		res.push_back(temp);
		//去掉已分割的字符串,在剩下的字符串中进行分割
		strs = strs.substr(pos + 1, strs.size());
		pos = strs.find(split);
	}
}

C++中strtok()函数的用法_Angelia_zhu的博客-CSDN博客_c++ strtok

char* strtok( char* str, const char* delim );
// 分解字符串为一组字符串,s为要分解的字符串,delim为分隔字符串

6. C语言中string函数详解

C语言中string函数详解_sunnylgz的博客-CSDN博客_c语言string

char *strdup(const char *s)    //字符串拷贝

char* strcpy(char* str1,char* str2);     //把str2指向的字符串拷贝到str1中去 
 
 char *strncpy(char *dest, const char *src,intcount)   //将字符串src中的count个字符拷贝到字符串dest中去 

char* strcat(char * str1,char * str2);   //把字符串str2接到str1后面,str1最后的'[+++]'被取消 

char *strncat(char *dest, const char *src, size_t maxlen)   //将字符串src中前maxlen个字符连接到dest中 

int strcmp(char * str1,char * str2);   // 比较两个字符串str1,str2. 

 int strncmp(char *str1,char *str2,int count)   //对str1和str2中的前count个字符按字典顺序比较 

 char* strchr(char* str,char ch);   //找出str指向的字符串中第一次出现字符ch的位置 

char* strstr(char* str1,char* str2);   //找出str2字符串在str1字符串中第一次出现的位置(不包括str2的串结束符) 

 char *strtok(char *s1, const char *s2)   //分解s1字符串为用特定分隔符分隔的多个字符串(一般用于将英文句分解为单词) 

void *memcpy(void *dest, const void *src, size_t n)   //字符串拷贝 

void *memccpy(void *dest, const void *src, int c, size_t n)   //字符串拷贝,到指定长度或遇到指定字符时停止拷贝 

void *memchr(const void *s, int c, size_t n)   // 在字符串中第开始n个字符中寻找某个字符c的位置 

 int memcmp(const void *s1, const void *s2,size_t n)   //按字典顺序比较两个串s1和s2的前n个字节  


)
File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 166, include(/www/wwwroot/outofmemory.cn/tmp/route_read.php)
File: /www/wwwroot/outofmemory.cn/index.php, Line: 29, include(/www/wwwroot/outofmemory.cn/tmp/index.inc.php)
字符串C++C_C_内存溢出

字符串C++C

字符串C++C,第1张

标准C++中的string类的用法总结 - xFreedom - 博客园

17.C++-string字符串类(详解) - 诺谦 - 博客园

c++ stringstream(老好用了) - 胡峻峥 - 博客园

​​​​​​C++中数字与字符串之间的转换 - 阿凡卢 - 博客园

1. 头文件
 #include 
  • string直接支持字符串连接
  • string直接支持字符串的大小比较
  • string直接支持子串查找和提取
  • string直接支持字符串的插入和替换
  • string同时具备字符串数组的灵活性,可以通过[ ]重载 *** 作符来访问每个字符。

2. 构造函数
string str;        //生成一个空字符串
 
string str ("ABC")  //等价于 str="ABC"

string str ("ABC", strlen) // 将"ABC"存到str里,最多存储前strlen个字节 string s("ABC",stridx,strlen) //将"ABC"的stridx位置,做为字符串开头,存到str里.且最多存储strlen个字节. string s(strlen, 'A') //存储strlen个'A'到str里

3. 常用成员函数
str1.assign("ABC");        //清空string串,然后设置string串为"ABC"
 
str1.length();                 //获取字符串长度
 
str1.size();            //获取字符串数量,等价于length()
 
str1.capacity();          //获取容量,容量包含了当前string里不必增加内存就能使用的字符数
 
str1.resize(10);           //表示设置当前string里的串大小,若设置大小大于当前串长度,则用字符\0来填充多余的.
str1.resize(10,char c);     //设置串大小,若设置大小大于当前串长度,则用字符c来填充多余的
 
str1.reserve(10);         //设置string里的串容量,不会填充数据.
str1.swap(str2);              //替换str1 和 str2 的字符串
 
str1.puch_back ('A');      //在str1末尾添加一个'A'字符,参数必须是字符形式
  
str1.append ("ABC");       //在str1末尾添加一个"ABC"字符串,参数必须是字符串形式
 
str1.insert (2,"ABC");       //在str1的下标为2的位置,插入"ABC"
 
str1.erase(2);             //删除下标为2的位置,比如: "ABCD" --> "AB"
 
str1.erase(2,1);              //从下标为2的位置删除1个,比如: "ABCD"  --> "ABD"
 
str1.clear();              //删除所有
 
str1.replace(2,4, "ABCD"); //从下标为2的位置,替换4个字节,为"ABCD"
 
str1.empty();            //判断为空, 为空返回true

4. 字符串流处理

C++ ostringstream、istringstream、stringstream 用法浅析_hellokandy的博客-CSDN博客_istringstream和stringstream

通过定义 ostringstream 和 istringstream 变量实现,头文件 #include

  • ostringstream : 用于执行C风格字符串的输出 *** 作。

    ——用来格式化字符串,避免申请大量的缓冲区,替代sprintf。


void ostringstream_test()
{
	//ostringstream 只支持 << 操作符
	std::ostringstream oss;
	oss << "this is test" << 123456;
 
	oss.str("");//清空之前的内容
	//oss.clear();//并不能清空内存
 
	//浮点数转换限制
	double tmp = 123.1234567890123;
	oss.precision(12);
	oss.setf(std::ios::fixed);//将浮点数的位数限定为小数点之后的位数
	oss << tmp;
 
	std::cout << oss.str() << "\r\n" << std::endl;
}
//  123.123456789012
  • istringstream : 用于执行C风格字符串的输入 *** 作。

void istringstream_test()
{
	//istringstream 只支持 >>  *** 作符
	std::string str = "welcome to china";
	std::istringstream iss(str);
 
	//把字符串中以空格隔开的内容提取出来
	std::string out;
	while(iss >> out)
	{
		std::cout << out << std::endl;
	}
	std::cout << "\r\n" << std::endl;
}
// welcome
// to
// china
  • stringstream  : 同时支持C风格字符串的输入输出 *** 作。


void stringstream_test()
{
	//输入
	std::stringstream ss;
	ss << "hello this is kandy " << 123;
	std::cout << ss.str() << "\r\n" << std::endl;
 
	//输出
	std::string out;
	while(ss >> out)
	{
		std::cout << out.c_str() << std::endl;
	}
	std::cout << "\r\n" << std::endl;
}
// hello this is kandy 123

//hello
//this
//is 
//kandy
//123

5. string 实现字符串分割函数split()——4种方法

C++中string如何实现字符串分割函数split()——4种方法_我行我素,向往自由的博客-CSDN博客_c++ string 分割

  • 使用stringstream流

使用getlint读取数据,选择接收的格式

// istream & getline(char* buf, int bufSize);	// 读到 \n 为止
istream & getline(char* buf, int bufSize, char delim); 
//读到 delim 字符为止
// \n 或 delim 都不会被读入 buf,但会被从文件输入流缓冲区中取走
void Stringsplit(string str,const const char split)
{
	istringstream iss(str);	// 输入流
	string token;			// 接收缓冲区
	while (getline(iss, token, split))	// 以split为分隔符
	{
		cout << token << endl; // 输出
	}
}

 

  • 使用string类提供的find方法和substr方法

C++string类中substr()函数的使用方法_&Mr.Gong的博客-CSDN博客_c++ string substr方法

size_type find( const basic_string& str, size_type pos = 0 ) const;
// pos开始搜索的位置
basic_string substr( size_type pos = 0, size_type count = npos ) const;
// pos 起始位置,count 子串的长度————————复制字符串
void Stringsplit(const string& str, const char split, vector& res)
{
	if (str == "")		return;
	//在字符串末尾也加入分隔符,方便截取最后一段
	string strs = str + split;
	size_t pos = strs.find(split);
 
	// 若找不到内容则字符串搜索函数返回 npos
	while (pos != strs.npos)
	{
		string temp = strs.substr(0, pos);
		res.push_back(temp);
		//去掉已分割的字符串,在剩下的字符串中进行分割
		strs = strs.substr(pos + 1, strs.size());
		pos = strs.find(split);
	}
}

  • 使用C库函数strtok

C++中strtok()函数的用法_Angelia_zhu的博客-CSDN博客_c++ strtok

char* strtok( char* str, const char* delim );
// 分解字符串为一组字符串,s为要分解的字符串,delim为分隔字符串

  • 使用regex_token_iterator(正则表达式)

6. C语言中string函数详解

C语言中string函数详解_sunnylgz的博客-CSDN博客_c语言string

char *strdup(const char *s)    //字符串拷贝

char* strcpy(char* str1,char* str2);     //把str2指向的字符串拷贝到str1中去 
 
 char *strncpy(char *dest, const char *src,intcount)   //将字符串src中的count个字符拷贝到字符串dest中去 

char* strcat(char * str1,char * str2);   //把字符串str2接到str1后面,str1最后的''被取消 

char *strncat(char *dest, const char *src, size_t maxlen)   //将字符串src中前maxlen个字符连接到dest中 

int strcmp(char * str1,char * str2);   // 比较两个字符串str1,str2. 

 int strncmp(char *str1,char *str2,int count)   //对str1和str2中的前count个字符按字典顺序比较 

 char* strchr(char* str,char ch);   //找出str指向的字符串中第一次出现字符ch的位置 

char* strstr(char* str1,char* str2);   //找出str2字符串在str1字符串中第一次出现的位置(不包括str2的串结束符) 

 char *strtok(char *s1, const char *s2)   //分解s1字符串为用特定分隔符分隔的多个字符串(一般用于将英文句分解为单词) 

void *memcpy(void *dest, const void *src, size_t n)   //字符串拷贝 

void *memccpy(void *dest, const void *src, int c, size_t n)   //字符串拷贝,到指定长度或遇到指定字符时停止拷贝 

void *memchr(const void *s, int c, size_t n)   // 在字符串中第开始n个字符中寻找某个字符c的位置 

 int memcmp(const void *s1, const void *s2,size_t n)   //按字典顺序比较两个串s1和s2的前n个字节  


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/674889.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-19
下一篇 2022-04-19

发表评论

登录后才能评论

评论列表(0条)

保存