string字符串:#include <string>
2013-12-03 18:52
369 查看
typedef basic_string<char> string;
1.string str("xxx");//在栈中隐士实例化string对象
2.string str = "xxx";
3.string str = string("xxx");//显示构造
4.string* str = new string("xxx");//在堆内存实例化对象
delete str;
5.string str;//空串不会显示任何内容
string str(""/*注意不能接受NULL指针*/);//同上
string str(pStr ? "" : pStr);
6.从c --> c++
char cStr[] = "xxx";
string str(cStr);
7.从c++ --> c
const char* str2 = str.c_str();//将字符串的首地址变为const类型字符串的指针
8.string的操作符重载:
str+str、str+=str、str=str3、str>str3、str==str3......
= + += > >= < <= == !=
9.string函数:注意下标都从0开始
(1)str.size()//字符串的缓冲区大小,不包含\0
(2)str.length()//获取元素个数,不包含\0
(3)str.resize(5);//将字符串缓冲区大小设置为5,如果多了则截断,如果少了全部补'\0'.
(4)str+="xxxxxx";//如果str本身后面有'\0'那么,所加字符串添加到后面,输出str的结果到'\0'截止,即后面加的字符串不会输出。
但是缓冲区的大小加了所加字符串的长度
(5)str.compare(str2);//比较字符串的大小
1:str > str2
0:str = str2
-1:str < str2
(6)str.append(str2);//将str2拼接到str后面
str.append(str2, n, m);//从str2字符串的第n个(下标从0开始)开始的m个字符拼接到str后面
如:string str1("hello");string str2("the world !");str1.append(str2, 4, 5);结果:helloworld
(7)str.at(index) == str[index]
相同的是下标都从0开始
不同的是 [] 没有检查数组越界(取出来未知值),而at检查是否越界访问,并抛出out_of_range& ex异常
(8)str.find(str2);//在str中查找str2,如果找到就返回str2在str1中开始位置的下标(下标类型为:string::size_type)
如果下标值等于:string::npos(全局变量),那么表示到了str1结尾
(9)str.insert(pos, str2);//在下标为pos的位置插入str2
另外一个版本:str.insert(pos, str2, n, m);//在下标为pos的位置插入m个字符, 从str2的第n个字符开始(开始下标为0)
(10)str.erase(pos, n);//从下标为pos的地方开始删除n个字符
(11)pos = str.find_first_of(str2, pos);//在str中找到第一个字符,这个字符能和str2中任何一个字符匹配,并返回这个字符在str1中的下标
否则返回npos(文件结尾)
(12)类似拷贝构造函数和获取子串
string str2(str1, pos, n);//在str1中从pos下标处开始的n个字符截取作为参数构造str2
str2 = str1.substr(pos, n);//在str1中从pos下标开始截取n个字符赋值给str2
(13)str1.replace(pos, size, str2);//将str1的pos下标处开始size个字符替换为str2,str1的长度可能随str2的长度变化
string str1 ("123456789abcdefghtr");
str1.replace (9, 2, "hello");
123456789hellocdefghtr
本文出自 “BaggerSky” 博客,谢绝转载!
1.string str("xxx");//在栈中隐士实例化string对象
2.string str = "xxx";
3.string str = string("xxx");//显示构造
4.string* str = new string("xxx");//在堆内存实例化对象
delete str;
5.string str;//空串不会显示任何内容
string str(""/*注意不能接受NULL指针*/);//同上
string str(pStr ? "" : pStr);
6.从c --> c++
char cStr[] = "xxx";
string str(cStr);
7.从c++ --> c
const char* str2 = str.c_str();//将字符串的首地址变为const类型字符串的指针
8.string的操作符重载:
str+str、str+=str、str=str3、str>str3、str==str3......
= + += > >= < <= == !=
9.string函数:注意下标都从0开始
(1)str.size()//字符串的缓冲区大小,不包含\0
(2)str.length()//获取元素个数,不包含\0
(3)str.resize(5);//将字符串缓冲区大小设置为5,如果多了则截断,如果少了全部补'\0'.
(4)str+="xxxxxx";//如果str本身后面有'\0'那么,所加字符串添加到后面,输出str的结果到'\0'截止,即后面加的字符串不会输出。
但是缓冲区的大小加了所加字符串的长度
(5)str.compare(str2);//比较字符串的大小
1:str > str2
0:str = str2
-1:str < str2
(6)str.append(str2);//将str2拼接到str后面
str.append(str2, n, m);//从str2字符串的第n个(下标从0开始)开始的m个字符拼接到str后面
如:string str1("hello");string str2("the world !");str1.append(str2, 4, 5);结果:helloworld
(7)str.at(index) == str[index]
相同的是下标都从0开始
不同的是 [] 没有检查数组越界(取出来未知值),而at检查是否越界访问,并抛出out_of_range& ex异常
(8)str.find(str2);//在str中查找str2,如果找到就返回str2在str1中开始位置的下标(下标类型为:string::size_type)
如果下标值等于:string::npos(全局变量),那么表示到了str1结尾
(9)str.insert(pos, str2);//在下标为pos的位置插入str2
另外一个版本:str.insert(pos, str2, n, m);//在下标为pos的位置插入m个字符, 从str2的第n个字符开始(开始下标为0)
(10)str.erase(pos, n);//从下标为pos的地方开始删除n个字符
(11)pos = str.find_first_of(str2, pos);//在str中找到第一个字符,这个字符能和str2中任何一个字符匹配,并返回这个字符在str1中的下标
否则返回npos(文件结尾)
(12)类似拷贝构造函数和获取子串
string str2(str1, pos, n);//在str1中从pos下标处开始的n个字符截取作为参数构造str2
str2 = str1.substr(pos, n);//在str1中从pos下标开始截取n个字符赋值给str2
(13)str1.replace(pos, size, str2);//将str1的pos下标处开始size个字符替换为str2,str1的长度可能随str2的长度变化
string str1 ("123456789abcdefghtr");
str1.replace (9, 2, "hello");
123456789hellocdefghtr
本文出自 “BaggerSky” 博客,谢绝转载!
相关文章推荐
- c语言字符串库函数#include<string.h>
- 我刚刚写了一个map的题目,还用到了#include<string>的头文件,下面我来总结一下 map<类型>变量 q q.find(找字符串) q.end()是否到达末尾
- c语言字符串库函数#include<string.h>
- #include<string> 与#include<string.h>
- C++Primer--->#include<iostream>与#include<iostream.h>以及#inclue<string> 和 #include<string.h>的区别
- 使用 fastjson将字符串转为 list<map<string,object>>
- wstring 未定义的标识符,include <string>
- 用string.Join与List<T>或者与string数组转换为字符串
- C++中#include<string>的问题
- 用string.Join与List<T>或者与string数组转换为字符串
- #include<string>与#include<string.h>的区别
- C++Primer--->#include<iostream>与#include<iostream.h>以及#inclue<string> 和 #include<string.h>的区别
- #include <linux/string.h>
- #include<iostream>与#include<iostream.h>及#inclue <string> 和 #include <string.h>的区别
- Comparator<String>接口,String类数组按字符串长度排序
- #include <string.h>与'string' : undeclared identifier相关问题
- #include<iostream>与#include<iostream.h>以及#inclue<string> 和 #include<string.h>的区别
- <Java>使用String读取文件名称获取得定位置的字符串
- C++库函数---<string.h>字符串处理函数
- sb.Append("<br>/");------在字符串sb后面加上fname转换后的string并且换行