一:string
string 是c++ 提供的字符串类型,不限长度。头文件#include < string>
声明:
string s;
string s=”china”;
和char数组不同的是string对象中不含\0,也就是说如果是一个三个字符的字符串,在string s[]中仅仅到s[2]就会结束。
- 操作 string对象
- 声明 string s;
- 字符串长度 s.length()或者s.size()
- 读取一行 getline(cin,s);
- 赋值 s=”china”;
- 字符串相加 s=s+”china”;s+=”china”;
- 字符串比较 s == “china”
- 取某一个字符 s[i]
- 操作 char类型字符串
- 声明 char s[100]; 或者char *a;
- 字符串长度 strlen(s)
- 读取一行 gets(s);
- 赋值 strcpy(s,”china”);
- 字符串相加 strcat(s,”china”);
- 字符串比较 strcmp(s,”china”);
- 取某一个字符 s[i]
二:stringstream
stringstream 来源于c++,头文件#include 。
c++中引入了ostringstream , istringstream , stringstream 三个类,应包含头文件iostream,sstream。
stringstream类的对象经常用于string与各种内置类型的转换。
#include <iostream>
#include <sstream>
#include <string>
using namespace std;
int main()
{
stringstream sstr;
//int 转换 string****************************
int a=100;
string str;
sstr<<a;
sstr>>str;
cout<<str<<endl;
//string 转换 char[]
sstr.clear();//如果是利用同一个stringstream对象实现多种类型的转换,都必须调用clear()来清空成员函数
string name="china";
char cname[100];
sstr<<str;
sstr>>cname;
cout<<cname<<endl;
//string 转换 int
sstr.clear();
int n=0;
string result="10000";
sstr<<result;
sstr>>n;
cout<<n<<endl;
return 0;
}
stringstream还可以用于一个字符串的分割。
#include <iostream>
#include <sstream>
#include <string>
using namespace std;
int main()
{
string s;
stringstream ss;
int a,b,c;
getline(cin,s);
ss.clear();
ss.str(s);//stringstream在调用str(),会返回临时的string对象,因为是临时的对象,所以在整个表达式结束后会被析构。
/*
stringstream ss("china");
const char* cstr2 = ss.str().c_str(); 错
const string& str2 = ss.str();
const char* cstr2 = str2.c_str(); 对
*/
ss>>a>>b>>c;
return 0;
}