识别字符串

时间:2017-09-03 21:33:08

标签: c++ string visual-c++

问题已得到解答,非常感谢。

2 个答案:

答案 0 :(得分:1)

您似乎对变量在C ++中的工作方式感到困惑。

用GCC编译你的程序,它说:

test.cpp: In function ‘int main()’:
a.cpp:23:20: error: ‘email’ was not declared in this scope
             cin >> email;

这意味着没有名为email的变量。您在emailverify类中声明了具有该名称的成员变量,但只有在定义emailverify类型的变量时才会使用该变量,而您没有这样做。

现在,我建议你摆脱emailverify类并在main中直接声明你需要的变量作为局部变量(你可以将它们声明为全局变量,但它是如果你把它们留在当地更好):

int main()
{
    std::string test;
    std::string email;
    std::string at = "@";
    std::string period = ".";

然后还有很多其他错误,例如email.find(at != std::string::npos)而非email.find(at) != std::string::npos,但您最终会遇到这些错误。

PS:我知道有些编程教师喜欢编写代码,例如std::string at = "@";,但恕我直言,这只是愚蠢的。写email.find("@")完全没问题,额外的变量什么都不买。

答案 1 :(得分:0)

您的问题属于部分代码:

class emailverify
{
public:             // global variables/functions
    std::string test;
    std::string email;
    std::string at = "@";
    std::string period = ".";
};

它不定义全局变量或函数,但声明类。主要功能中既没有定义或声明的电子邮件或测试变量。

如果你想坚持全局的事情,你可以做的是创建类型为emailverify的全局对象,并通过.使用其成员,或者使所有成员static并通过::访问(emailverify::test)或将class更改为namespace,但也需要在课外定义它们(Defining static members in C++)。

但是,您可以将它们当作本地人使用,现在不要担心所有这些。