c++string函数

c++string函数,第1张

构造函数是BigInt(string s);

//所以你要写

BigInt a("10086");

//或者

string s("10086");    //也可以string s="10086";

BigInt a(s);          //也可以BigInt a=s;

#include <iostream>

using namespace std;

class MyString

{

public:

void Zero();

MyString();

~MyString();

void zeroStr(){if(m_string) {delete m_string;m_string=0;}}

MyString(const char str);

MyString(MyString & str);

MyString & operator=(const MyString & str);//这里用的是引用返回,所用一定要用this指针

MyString & operator=(const char c_str);//这里用的是引用返回,所用一定要用this指针

char operator[](const unsigned int index);

MyString strcat(const MyString & str);

MyString strcat(const char  c_str);

bool operator>(const MyString &str);

/其余部分因时间关系,我就不写了,不过可以参考以上的方法和视图/

char getString();

int length();

private:

char  m_string; //指向字符首地址

unsigned int m_size;  //字符串长度

};

void MyString::Zero()

{

if(!m_string)

return;

delete m_string;

m_string=0;//清零很重要

}

MyString::MyString()

{

m_size=255;

m_string=new char[255];

m_string='\0';

cout<<"我是\t无参数构造函数"<<endl;

cout<<"m_string的值是:\t"<<m_string<<endl;

}

MyString::~MyString()

{

Zero();

cout<<"析构函数运行了"<<endl;

}

MyString::MyString(const char str)

{

m_size=strlen(str)+1;

m_string=new char[m_size];

memcpy(m_string,str,m_size);

cout<<"我是\t字符串构造函数"<<endl;

cout<<"m_string的值是:\t"<<m_string<<endl;

}

MyString::MyString(MyString & str)

{

m_size=strm_size;

m_string=new char[m_size];

memcpy(m_string,strm_string,m_size);

cout<<"我是\t浅层拷贝"<<endl;

cout<<"m_string的值是:\t"<<m_string<<endl;

}

MyString & MyString::operator=(const MyString & str)

{

m_size=strm_size;

m_string=new char[m_size];

memcpy(m_string,strm_string,m_size);

cout<<"我是\t对象赋值运算"<<endl;

cout<<"m_string的值是:\t"<<m_string<<endl;

return this;

}

MyString & MyString::operator=(const char c_str)

{

m_size=strlen(c_str)+1;

m_string=new char[m_size];

memcpy(m_string,c_str,m_size);

cout<<"我是\t字符串赋值运算"<<endl;

cout<<"m_string的值是:\t"<<m_string<<endl;

return this;

}

char MyString::operator[](const unsigned int index)

{

cout<<"我是\t取值运算"<<endl;

if(index<m_size) return m_string[index];

return '\0';

}

bool MyString::operator>(const MyString &str)

{

cout<<"我是\t比较运算>"<<endl;

if(m_string>(strm_string))

return 1;

return 0;

}

char MyString::getString()

{

return m_string;

}

int MyString::length()

{

return m_size;

}

MyString MyString::strcat(const MyString & str)

{

char temp[255]={0};

::strcpy(temp,m_string);

::strcat(temp,strm_string);

MyString m_str(temp);

return m_str;//这用的是匿名对象做为返回值,还有其它方法你根据自己需要自己改

}

int main(int argc, char argv[])

{

/这里是测试部分/

MyString str("I like C++");

MyString strtest;

strtest="You love girls";

strtest>str cout<<"真的很大"<<endl:cout<<"真的很小"<<endl;

MyString three=strteststrcat(str);//一个方法会引用多种方式\构造\挎贝\重写,自行研究

cout<<"three 是这样的:"<<threegetString()<<endl;

cout<<"打印第一个字符:\t"<<strtest[2]<<endl;

/这里是测试部分/

return 0;

}

//希望能对你有所帮助。

String 函数

返回 Variant (String),其中包含指定长度重复字符的字符串。

语法

String(number, character)

String 函数的语法有下面的命名参数:

部分说明

number 必要参数;Long。返回的字符串长度。如果 number 包含 Null,将返回 Null。

character 必要参数;Variant。为指定字符的字符码或字符串表达式,其第一个字符将用于建立返回的字符串。如果 character 包含 Null,就会返回 Null

String 函数示例

本示例使用 String 函数来生成一指定长度,且只含单一字符的字符串。

Dim MyString

MyString = String(5, "")' 返回 ""。

MyString = String(5, 42)' 返回 ""。

MyString = String(10, "ABC")' 返回 "AAAAAAAAAA"。

string先分到内存空间,string2后分到,因为是局部变量,被分到栈区中,因此string2在string的前面,申请了5个字节,但是由于栈对齐的原因,在这里例子里面,二者距离就是8个字节,也就是string2里可以放8个字节,而它的第9个字节就是string[0]了。这样你从string复制到string2,可以认为就是把每个字符都前移了8个字节,包括字符串的结束符‘/0’。最后的结果你会发现从string2开始识别的字符串就是原串,而从string开始,就是“五”了,(前面每个汉字都占两个字节)

复制之前

复制之后

bcopy,memccpy,memcpy,strcpy,strncpy

表头文件 #include <stringh>

定义函数 char strcat (char dest,const char src);

函数说明 strcat()会将参数src字符串拷贝到参数dest所指的字符串尾。第一个参数dest要有足够的空间来容纳要拷贝的字符串。

返回值 返回参数dest的字符串起始地址

范例 #include <stringh>

main()

{

char a[30]="string(1)";

char b[]="string(2)";

printf("before strcat() : %s\n",a);

printf("after strcat() : %s\n",strcat(a,b));

}

执行 before strcat () : string(1)

after strcat () : string(1)string(2)

//---------------------------------------------//

strcpy(拷贝字符串)

相关函数 bcopy,memcpy,memccpy,memmove

表头文件 #include<stringh>

定义函数 char strcpy(char dest,const char src);

函数说明 strcpy()会将参数src字符串拷贝至参数dest所指的地址。

返回值 返回参数dest的字符串起始地址。

附加说明 如果参数dest所指的内存空间不够大,可能会造成缓冲溢出(buffer Overflow)的错误情况,在编写程序时请特别留意,或者用strncpy()来取代。

范例 #include<stringh>

main()

{

char a[30]="string(1)";

char b[]="string(2)";

printf("before strcpy() :%s\n",a);

printf("after strcpy() :%s\n",strcpy(a,b));

}

执行 before strcpy() :string(1)

after strcpy() :string(2)

//-----------------------------------//

strlen(返回字符串长度)

相关函数

表头文件 #include<stringh>

定义函数 size_t strlen (const char s);

函数说明 strlen()用来计算指定的字符串s的长度,不包括结束字符"\0"。

返回值 返回字符串s的字符数。

范例 /取得字符串str的长度/

#include<stringh>

main()

{

char str = "12345678";

printf("str length = %d\n", strlen(str));

}

执行 str length = 8

//----------------------------------------//

strcmp(比较字符串)

相关函数 bcmp,memcmp,strcasecmp,strncasecmp,strcoll

表头文件 #include<stringh>

定义函数 int strcmp(const char s1,const char s2);

函数说明 strcmp()用来比较参数s1和s2字符串。字符串大小的比较是以ASCII 码表上的顺序来决定,此顺序亦为字符的值。strcmp()首先将s1第一个字符值减去s2第一个字符值,若差值为0则再继续比较下个字符,若差值不为0则将差值返回。例如字符串"Ac"和"ba"比较则会返回字符"A"(65)和'b'(98)的差值(-33)。

返回值 若参数s1和s2字符串相同则返回0。s1若大于s2则返回大于0的值。s1若小于s2则返回小于0 的值。

范例 #include<stringh>

main()

{

char a="aBcDeF";

char b="AbCdEf";

char c="aacdef";

char d="aBcDeF";

printf("strcmp(a,b) : %d\n",strcmp(a,b));

printf("strcmp(a,c) : %d\n",strcmp(a,c));

printf("strcmp(a,d) : %d\n",strcmp(a,d));

}

执行 strcmp(a,b) : 32

strcmp(a,c) :-31

strcmp(a,d) : 0

1.声明一个C++字符串

声明一个字符串变量很简单:

string Str;

这样我们就声明了一个字符串变量,但既然是一个类,就有构造函数和析构函数。上面的声明没有传入参数,所以就直接使用了string的默认的构造函数,这个函数所作的就是把Str初始化为一个空字符串。String类的构造函数和析构函数如下:

a) string s; //生成一个空字符串s

b) string s(str) //拷贝构造函数 生成str的复制品

c) string s(str,stridx) //将字符串str内“始于位置stridx”的部分当作字符串的初值

d) string s(str,stridx,strlen) //将字符串str内“始于stridx且长度顶多strlen”的部分作为字符串的初值

e) string s(cstr) //将C字符串作为s的初值

f) string s(chars,chars_len) //将C字符串前chars_len个字符作为字符串s的初值。

g) string s(num,c) //生成一个字符串,包含num个c字符

h) string s(beg,end) //以区间beg;end(不包含end)内的字符作为字符串s的初值

i) s~string() //销毁所有字符,释放内存

都很简单,我就不解释了。

2.字符串 *** 作函数

这里是C++字符串的重点,我先把各种 *** 作函数罗列出来,不喜欢把所有函数都看完的人可以在这里找自己喜欢的函数,再到后面看他的详细解释。

a) =,assign() //赋以新值

b) swap() //交换两个字符串的内容

c) +=,append(),push_back() //在尾部添加字符

d) insert() //插入字符

e) erase() //删除字符

f) clear() //删除全部字符

g) replace() //替换字符

h) + //串联字符串

i) ==,!=,<,<=,>,>=,compare() //比较字符串

j) size(),length() //返回字符数量

k) max_size() //返回字符的可能最大个数

l) empty() //判断字符串是否为空

m) capacity() //返回重新分配之前的字符容量

n) reserve() //保留一定量内存以容纳一定数量的字符

o) [ ], at() //存取单一字符

p) >>,getline() //从stream读取某值

q) << //将谋值写入stream

r) copy() //将某值赋值为一个C_string

s) c_str() //将内容以C_string返回

t) data() //将内容以字符数组形式返回

u) substr() //返回某个子字符串

v)查找函数

w)begin() end() //提供类似STL的迭代器支持

x) rbegin() rend() //逆向迭代器

y) get_allocator() //返回配置器

private string sss(string ss)

{

string s = "";

for (int i = 0; i < ssLength / 2; i++)

{

s += ss[i]ToString() + ss[ssLength / 2 + i]ToString();

}

return s;

}

以上就是关于c++string函数全部的内容,包括:c++string函数、用C++语言实现String类、vba 函数 麻烦举个例子介绍一下string()这个函数等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: http://outofmemory.cn/zz/9822901.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存