这是一个大学项目的练习,目前正在研究面向对象的程序设计,对此我还比较陌生。
我有一个具有属性Publication
和Headline
的类Text
。
这是该类的代码(头文件)
#include <iostream>
#include <string>
using namespace std;
using std::string;
class publication
{
private:
string headline,text;
public:
publication(); //constructor
void set_headline(string const new_headline);
void set_text(string const new_text);
string get_headline();
string get_text();
void print();
}
这就是实现(.cpp文件)
#include <iostream>
#include <string>
#include "publication.h"
using namespace std;
using std::string;
publication::publication()
{
publication.headline="";
publication.text="";
}
void publication::set_headline(string const new_headline)
{
publication.headline=new_headline; //any input is valid
}
void publication::set_text(string const new_text)
{
publication.text=new_text; //any input is valid
}
string publication::get_headline()
{
return publication.headline;
}
string publication::get_text()
{
return publication.text;
}
到目前为止,我没有看到任何问题,如果我错了,请纠正我。
这是我的问题:
我需要定义一个名为
Article
的新类。 Article
是Publication
的一种,因此它是从Author
继承的,但它也有一个自己的唯一字段,称为Article
。这是
set_author
类的代码(头文件)#include <iostream>
#include <string>
#include "publication.h"
using namespace std;
using std::string;
class article: public publication
{
private:
string author;
public:
article();
void set_author(string const new_author);
string get_author();
}
这就是实现(.cpp文件)
#include <iostream>
#include <string>
#include "article.h"
using namespace std;
using std::string;
article::article()
{
article.author="";
article.set_headline("");
article.set_text("");
}
void article::set_author(string const new_author)
{
article.author=new_author;
}
string article::get_author()
{
return article.author;
}
这是我的问题:
在
123
方法中,我要检查输入是否有效。据我所知,没有一个叫Bob%^!@
的人或一个叫的人。有没有一种方法可以检查字符串是否包含非字母的字符? 最佳答案
首先,我要指出一些我发现的问题。
在类的构造函数和设置器中,不要使用点分隔符将新值分配给成员数据。
如果您有publication.headline="";
,则只需执行headline = "";
。这适用于您在其自己的类中使用成员数据的所有情况,因此同样适用于您的article
类。
其次,在您的article
类中。您设置.h文件进行继承的方式是正确的;但是,在构造函数的.cpp中,您必须像下面那样将publication
构造函数扩展到article
构造函数上。
article::article() : publication()
{
....
}
: publication()
是对super
类的构造函数的调用,没有它,将不会初始化headline
和text
数据成员。将
const
变量以这种样式编写也是一种常见的做法:const <data-type> <variable-name>
,因此如果您具有string const new_author
或类似的任何内容,只需切换到const string new_author
。现在,关于以您正在谈论的方式验证输入,您可以使用两种我知道的方法。一种使用
isalpha()
方法,另一种使用ASCII
表检查每个字符的值。ASCII方法...通过每个字符的简单迭代器,并检查值是否介于65和90或97和122 ...之间(请参阅ascii表以获取帮助)。在此示例中,我将使用名为
name
的变量作为输入字符串变量。for (int i = 0; i < strlen(name); i++)
{
if ((int(name[i]) >= 65 && int(name[i]) <= 90)
|| (int(name[i]) >= 97 && int(name[i]) <= 122))
{
...the character is A-Z or a-z...
}
}
功能方法...
for (int i = 0; i < strlen(name); i++)
{
if (!(isalpha(name[i])))
{
...the character is only A-Z or a-z...
}
}
希望对您有所帮助!编程愉快!
关于c++ - 检查输入的有效性-设定器功能,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32323519/