_CRT_SECURE_NO_WARNINGS
用于对取消不安全的strcpy函数的错误报警
_CRT_SECURE_NO_WARNINGS
//string1.cpp -- string class methods
#define _CRT_SECURE_NO_WARNINGS
#include<cstring>
#include"string1.h"
using std::cin;
using std::cout;
using std::strcpy;
using std::strcmp;
//initializing static class member
int String::num_strings = 0;
//static method
int String::HowMany()
{
return num_strings;
}
//class methods
String::String(const char* s)
{
len = std::strlen(s);
str = new char[len +1];
strcpy(str ,s);
num_strings++;
}
String::String()
{
len = 4;
str = new char[1];
str[0] = '\0';
num_strings++;
}
String::String(const String& st)
{
num_strings++;
len = st.len;
str = new char[len+1];
strcpy(str, st.str);
}
String::~String()
{
--num_strings;
delete[]str;
}
//overloaded operator methods
//assign a String to a String
String& String::operator=(const String& st)
{
if (this == &st)
{
return *this;
}
delete[]str;
len = st.len;
str = new char[len+1];
strcpy (str, st.str);
return *this;
}
//assign a c string to a String
String& String::operator=(const char* s)
{
delete[]str;
len = std::strlen(s);
str = new char[len+1];
strcpy (str, s);
return *this;
}
//read-write char access for non-const String
char& String::operator[](int i)
{
return str[i];
}
//read-only char access for coust String
const char& String::operator[](int i)const
{
return str[i];
}
//overloaded operator friends
bool operator<(const String& st1, const String& st2)
{
return (strcmp(st1.str, st2.str));
}
bool operator>(const String& st1, const String& st2)
{
return (st2 < st1);
}
bool operator==(const String& st1, const String& st2)
{
return (std::strcmp(st1.str, st2.str) == 0);
}
//simple String output
ostream& operator<<(ostream& os, const String& st)
{
os << st.str;
return os;
}
//quit and dirty String input
istream& operator>>(istream& is, String& st)
{
char temp[String::CINLIM];
is.get(temp, String::CINLIM);
if (is)
{
st = temp;
}
while (is && is.get() !='\n')
{
continue;
}
return is;
}
重载>>运算符提供了一种将键盘输入行读入到 String 对象中的简单方法。它假定输入的字符数不多于String:CINLIM 的字符数,并丢弃多余的字符。在if条件下,如果由于某种原因(如到达文件尾或 get(char*.int)读取的是一个空行)导致输入失败,istream对象的值将置为false。程序清单 12.6通过一个小程序来使用这个类,该程序允许输入几个字符串。程序首先提示用户输入,然后将用户输入的字符串存储到 Sting 对象中,并显示它们,最后指出哪个字符串最短、哪个字符串按字
母顺序排在最前面。

被折叠的 条评论
为什么被折叠?



