String的几个问题
来源:互联网 发布:淘宝图片下载器 编辑:程序博客网 时间:2024/05/19 16:37
1. 已知strcpy的函数原型:char *strcpy(char *strDest, const char *strSrc)其中strDest 是目的字符串,strSrc 是源字符串。不调用C++/C 的字符串库函数,请编写函数 strcpy。
答案:
char *strcpy(char *strDest, const char *strSrc)
{
if ( strDest == NULL || strSrc == NULL)
return NULL ;
if ( strDest == strSrc)
return strDest ;
char *tempptr = strDest ;
while( (*strDest++ = *strSrc++) != ‘/0’); //把strSrc的值赋给strDest,再判断是否到达串尾
return tempptr ;
}
2. 已知String类定义如下:
class String
{
public:
String(const char *str = NULL); // 通用构造函数
String(const String &another); // 拷贝构造函数
~ String(); // 析构函数
String & operater =(const String &rhs); // 赋值函数
private:
char *m_data; // 用于保存字符串
};
尝试写出类的成员函数实现。
答案:
String::String(const char *str)
{
if ( str == NULL ) //strlen在参数为NULL时会抛异常才会有这步判断
{
m_data = new char[1] ;
m_data[0] = '/0' ;
}
else
{
m_data = new char[strlen(str) + 1];
strcpy(m_data,str);
}
}
String::String(const String &another)
{
m_data = new char[strlen(another.m_data) + 1];
strcpy(m_data,other.m_data);
}
String& String::operator =(const String &rhs)
{
if ( this == &rhs)
return *this ;
delete []m_data; //删除原来的数据,新开一块内存
m_data = new char[strlen(rhs.m_data) + 1];
strcpy(m_data,rhs.m_data);
return *this ;
}
String::~String()
{
delete []m_data ;
答案:
char *strcpy(char *strDest, const char *strSrc)
{
if ( strDest == NULL || strSrc == NULL)
return NULL ;
if ( strDest == strSrc)
return strDest ;
char *tempptr = strDest ;
while( (*strDest++ = *strSrc++) != ‘/0’); //把strSrc的值赋给strDest,再判断是否到达串尾
return tempptr ;
}
2. 已知String类定义如下:
class String
{
public:
String(const char *str = NULL); // 通用构造函数
String(const String &another); // 拷贝构造函数
~ String(); // 析构函数
String & operater =(const String &rhs); // 赋值函数
private:
char *m_data; // 用于保存字符串
};
尝试写出类的成员函数实现。
答案:
String::String(const char *str)
{
if ( str == NULL ) //strlen在参数为NULL时会抛异常才会有这步判断
{
m_data = new char[1] ;
m_data[0] = '/0' ;
}
else
{
m_data = new char[strlen(str) + 1];
strcpy(m_data,str);
}
}
String::String(const String &another)
{
m_data = new char[strlen(another.m_data) + 1];
strcpy(m_data,other.m_data);
}
String& String::operator =(const String &rhs)
{
if ( this == &rhs)
return *this ;
delete []m_data; //删除原来的数据,新开一块内存
m_data = new char[strlen(rhs.m_data) + 1];
strcpy(m_data,rhs.m_data);
return *this ;
}
String::~String()
{
delete []m_data ;
}
3.输入一个字符串,将其逆序后输出。(使用C++,不建议用伪码)
#include <iostream>
using namespace std;
void main()
{
char a[50];
memset(a,0,sizeof(a));//初始化a,置0
int i=0,j;
char t;
cin.getline(a,50,'\n');//往a输入50个字符,以回车结束
for(i=0,j=strlen(a)-1;i<strlen(a)/2;i++,j--)
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
cout<<a<<endl;
}
//第二种
string str;
cin>>str;
str.replace;
cout<<str;
- String的几个问题
- String字符串需要掌握的几个问题
- Java String 类型几个问题
- 答初学者的几个问题
- 关于《仙剑》的几个问题
- mysql碰到的几个问题
- 自己设计的几个问题
- 面试的几个问题
- CVSNT/WINCVS的几个问题
- Nokia S60的几个问题
- nmake的几个问题
- 我不明白的几个问题
- 关于CCheckListBox的几个问题!
- 关于网络的几个问题
- 转载BPEL的几个问题
- 有关浏览器的几个问题
- 准备几个问题的答案
- 安装bugzilla的几个问题
- WinRT:Win32的面向对象替代品
- sybase基础知识(新手必看)
- 中国和美国的互联网差异
- JavaScript对INPUT输入的格式化显示 - 数字每隔3位加逗号
- 鼠标问题
- String的几个问题
- 编程珠玑--位图法排序
- ExtJs_Ext.layout.Accordion闲谈
- android2.3修改设备分辨率
- NOD32杀毒软件引起默认域策略无法应用到客户端一案
- 【转载】Hadoop快速入门
- windows 7! 真就不一样
- 统计目录下所有图片的大小(Qt)
- oracle 数据更新