c++字符串处理函数
2008-08-13 13:16
C字符数组
strcpy(char destination[], const char source[]);
strcpy将字符串source拷贝到字符串destination中。
strcpy函数应用举例
原型:strcpy(char destination[], const char source[]);
功能:将字符串source拷贝到字符串destination
例程:
#include <iostream.h>
#include <string.h>
void main(void)
{
  char str1[10] = { "TsinghuaOK"};
  char str2[10] = { "Computer"};
  cout <<strcpy(str1,str2)<<endl;
}
运行结果是:Computer
第二个字符串将覆盖掉第一个字符串的所有内容!
注意:在定义数组时,字符数组1的字符串长度必须大于或等于字符串2的字符串长度。不能用赋值语句将一个字符串常量或字符数组直接赋给一个字符数组。所有字符串处理函数都包含在头文件string.h中。

strncpy(char destination[], const char source[], int numchars);
strncpy将字符串source中前numchars个字符拷贝到字符串destination中。
strncpy函数应用举例
原型:strncpy(char destination[], const char source[], int numchars);
功能:将字符串source中前numchars个字符拷贝到字符串destination
例程:
#include <iostream.h>
#include <string.h>
void main(void)
{
  char str1[10] = { "Tsinghua "};
  char str2[10] = { "Computer"};
  cout <<strncpy(str1,str2,3)<<endl;
}
运行结果:Comnghua
注意:字符串source中前numchars个字符将覆盖掉字符串destination中前numchars个字符!
strcat(char target[], const char source[]);
strcat:将字符串source接到字符串target的后面。
strcat函数应用举例
原型:strcat(char target[], const char source[]);
功能:将字符串source接到字符串target的后面
例程:
#include <iostream.h>
#include <string.h>
void main(void)
{
  char str1[] = { "Tsinghua "};
  char str2[] = { "Computer"};
  cout <<strcpy(str1,str2)<<endl;
}
运行结果:Tsinghua Computer
注意:在定义字符数组1的长度时应该考虑字符数组2的长度,因为连接后新字符串的长度为两个字符串长度之和。进行字符串连接后,字符串1的结尾符将自动被去掉,在结尾串末尾保留新字符串后面一个结尾符。

strncat(char target[], const char source[], int numchars);
strncat:将字符串source的前numchars个字符接到字符串target的后面。
strncat函数应用举例:
原型:strncat(char target[], const char source[], int numchars);
功能:将字符串source的前numchars个字符接到字符串target的后面
例程:
#include <iostream.h>
#include <string.h>
void main(void)
{
  char str1[] = { "Tsinghua "};
  char str2[] = { "Computer"};
  cout <<strncat(str1,str2,3)<<endl;
}
运行结果:Tsinghua Com

int strcmp(const char firststring[], const char secondstring);
strcmp比较两个字符串firststringsecondstring
strcmp函数应用举例
原型:int strcmp(const char firststring[], const char secondstring);
功能:比较两个字符串firststringsecondstring
例程:
#include <iostream.h>
#include <string.h>
void main(void)
{
  char buf1[] = "aaa";
  char buf2[] = "bbb";
  char buf3[] = "ccc";
  int ptr;
  ptr = strcmp(buf2,buf1);
  if(ptr > 0)
  cout <<"Buffer 2 is greater than buffer 1"<<endl;
  else
  cout <<"Buffer 2 is less than buffer 1"<<endl;
  ptr = strcmp(buf2,buf3);
  if(ptr > 0)
  cout <<"Buffer 2 is greater than buffer 3"<<endl;
  else
  cout <<"Buffer 2 is less than buffer 3"<<endl;
}
运行结果是:Buffer 2 is less than buffer 1
                  Buffer 2 is greater than buffer 3
strlen( const char string[] );
strlen统计字符串string中字符的个数。 
strlen函数应用举例
原型:strlen( const char string[] );
功能:统计字符串string中字符的个数
例程:
#include <iostream.h>
#include <string.h>
void main(void)
{
char str[100];
cout <<"请输入一个字符串:";
cin >>str;
cout <<"The length of the string is :"<<strlen(str)<<""<<endl;
}
运行结果The length of the string is x (x为你输入的字符总数字)
注意:strlen函数的功能是计算字符串的实际长度,不包括'\0'在内。另外,strlen函数也可以直接测试字符串常量的长度,如:strlen("Welcome")
c++字符串问题
补充问题:
输入一个字符串(如”abc”),将其反向输出(“cba”)
要求利用char*string类分别实现.
请给出详细解答.
回答:
最佳答案c++中string的用法 1使用string
#include<iostream>
#include <string>
using namespace std;

string reverseString(string s);
void main()
{
string str;
cout<<"Enter a string:"<<endl;
cin>>str;
cout<<str<<"的反向字符串是"<<reverseString(str)<<endl;
}
string reverseString(string s)
{
if(s.length()==1)
return s;
else
{
char c=s[s.length()-1];
//cout<<c;
return c+reverseString(s.substr(0,s.length()-1));

}
}
2、使用char*
#include<iostream>
#include <string>
using namespace std;

string reverseString(string s);
void main()
{
string str;
char *pBuf = (char*)calloc(100, sizeof(char));
cout<<"Enter a string:"<<endl;
line(pBuf,99);
str= pBuf;
cout<<str<<"的反向字符串是"<<reverseString(str)<<endl;
free(pBuf);
}
string reverseString(string s)
{
if(s.length()==1)
return s;
else
{
char c=s[s.length()-1];
//cout<<c;
return c+reverseString(s.substr(0,s.length()-1));

}
}
这个用STRING会很方便,string这个容器有功能很强大~~
之所以抛弃char*的字符串而选用C++标准程序库中的string类,是因为他和前者比较起来,不必 担心内存是否足够、字符串长度等等,而且作为一个类出现,他集成的操作函数足以
完成我们大多数情况下(甚至是100%)的需要。我们可以用 = 进行赋值操作,== 进行比较,+ 做串联(是不是很简单?)。我们尽可以把它看成是C++的基本数据类型。
首先,为了在我们的程序中使用string类型,我们必须包含头文件 <string>。如下:
#include <string> //注意这里不是string.h string.hC字符串头文件
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) //生成一个字符串,包含numc字符
h) string s(beg,end) //以区间beg;end(不包含end)内的字符作为字符串s的初值

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。