我是靠谱客的博主 端庄小蚂蚁,最近开发中收集的这篇文章主要介绍09.6 strlen()和str.length()使用区别,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

转自:https://blog.csdn.net/xulecn/article/details/1418976

两者都是求字符串的长度,但strlen( )的参数必须是char*  ;而 str.length( )是string类对象str调用的成员函数,所以它们用在不同的地方;

  char* ch="asdfsafas";
 string str="adfadf";
 cout<<str.length();
//  cout<<strlen(str);  出错
 cout<<strlen(ch);
// cout<<ch.length();出错

strlen()的定义基本如下:

int strlen( const char *str ) //输入参数const

{
 assert( strt != NULL ); //断言字符串地址非0
 int len;
 while( (*str++) != '/0' ) 
 { 
  len++; 
 } 
 return len;
}
##########################
转贴:vc在线
类String的构造函数、析构函数和赋值函数,已知类String的原型为:
class String

 public: 
  String(const char *str = NULL); // 普通构造函数 
  String(const String &other); // 拷贝构造函数 
  ~ String(void); // 析构函数 
  String & operate =(const String &other); // 赋值函数 
 private: 
  char *m_data; // 用于保存字符串 
};
//普通构造函数

String::String(const char *str) 
{
 if(str==NULL) 
 {
  m_data = new char[1]; // 对空字符串自动申请存放结束标志'/0'的空
  //对m_data加NULL 判断
  *m_data = '/0'; 
 } 
 else
 {
  int length = strlen(str); 
  m_data = new char[length+1]; // 若能加 NULL 判断则更好 
  strcpy(m_data, str); 
 }
}

// String的析构函数

String::~String(void) 
{
 delete [] m_data; // 或delete m_data;
}

//拷贝构造函数

String::String(const String &other)    // 输入参数为const型

 int length = strlen(other.m_data); 
 m_data = new char[length+1];     //对m_data加NULL 判断
 strcpy(m_data, other.m_data); 
}

//赋值函数

String & String::operate =(const String &other) // 输入参数为const型

 if(this == &other)   //检查自赋值
  return *this; 
 delete [] m_data;     //释放原有的内存资源
 int length = strlen( other.m_data ); 
 m_data = new char[length+1];  //对m_data加NULL 判断
 strcpy( m_data, other.m_data ); 
 return *this;         //返回本对象的引用
}
 

最后

以上就是端庄小蚂蚁为你收集整理的09.6 strlen()和str.length()使用区别的全部内容,希望文章能够帮你解决09.6 strlen()和str.length()使用区别所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(79)

评论列表共有 0 条评论

立即
投稿
返回
顶部