标准C++中的string类的用法总结 - xFreedom - 博客园
17.C++-string字符串类(详解) - 诺谦 - 博客园
c++ stringstream(老好用了) - 胡峻峥 - 博客园
C++中数字与字符串之间的转换 - 阿凡卢 - 博客园
1. 头文件 #include
- string直接支持字符串连接
- string直接支持字符串的大小比较
- string直接支持子串查找和提取
- string直接支持字符串的插入和替换
- string同时具备字符串数组的灵活性,可以通过[ ]重载 *** 作符来访问每个字符。
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(正则表达式)
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个字节
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)