C++学习笔记6_字符串
1. C语言的字符串,char * s = "aaaa";
#include<string>
class Test
{
public :
Test(int a, char*name)
{
this->a=a;
int len = strlen(name);
this->name=new char[len+1];
strcpy(this->name,name);
}
~Test()
{
if(this->name!=NULL)
{
delete name;
name =NULL;
}
}
private:
int a;
char* name;
}
// strlen("123")只是字符串的有效长度,不是实际长度,实际是"123\0",区别于sizeof("123"),sizeof只是数据类型的大小,"asdfadsf"的数据类型是char*,sizeof("123")是指sizeof(typeof(*char))
2. C++的字符串
//如果是c++的字符串,那么
string name;
//这个name值就是string的对象。
那么,构造函数,可以为
Test(int a, char*name)
{
this->name = name;//如果name没有初值,应该是调用拷贝构造函数;如果有初值,应该是调用=操作符函数;
}
3. string对象包裹了char* 变量;
int main(void)
{
stirng s1="123";
stirng s2="456";
string s3 =s1+s2;//调用了+操作符函数
s1[1]='x';//重载[]操作符
cout<<s1<<endl;//重载<<操作符
}
4. string 类型重写了>>号操作符,要调用cin>>str,也要include<string>
istream & operator>>(istream & ins,string &str)
{
if(str.str!=NULL)
{
delete[] str.str;
str.str=NULL;
}
char temp_str[4096]={0};
cin>>temp_str;//char*默认就有重写>>号的。
s.str=new char[strlen(temp_str)+1];
strcpy(s.str,temp_str);
return ins;
}
5.char *strcat(char *dest, const char *src);//往字符串最后空白的地方追加字符串
注意,在使用strcat(str1,"aaaaa");的时候,str1一定要有初始值,不然不知道追加到哪里了
int main(void){
char *str1 = new char[10]{0};//new char[10]{'\0'}这样可能可以。
memset(temp.str,0,10);
strcat(str1,"aaaaa");
strcat(str2,"bbbb");
}
//如果使用strcpy就不用
最新文章
- loadrunner录制脚本如何选择使用get请求和post请求的方式
- 使用Wireshark 抓取数据包
- 和菜鸟一起学linux总线驱动之初识spi驱动数据传输流程【转】
- VoltDB公布4.0版本号,大步提高内存实时分析速度,进军操作数据库市场
- Java – 4 Security Vulnerabilities Related Coding Practices to Avoid---reference
- java排序方法中的插入排序方法
- Ubuntu 15.10 x64 安装 Android SDK(转)
- mint-ui —— navbar和tab-container的区别
- 【HTTP协议】---HTTPS协议
- .net c#获取自定义Attribute
- JPQL模糊匹配单个字符
- java实现获取当前年月日 小时 分钟 秒 毫秒
- C#导出HTML到PDF组件Pechkin
- UITableViewCell 取消分隔线
- Gym 100712I Bahosain and Digits(开关翻转问题)
- 1412. [ZJOI2009]狼和羊的故事【最小割】
- 深入理解JavaScript系列(11):执行上下文(Execution Contexts)
- Office文档如何转换 PDF 转 DOC XLS
- python学习-43 装饰器 -- 函数闭包2
- ";Class does not support Automation or does not support expected interface";数据库连接错误问题分析与解决