C++ 识别字符串 问题已经得到解答,非常感谢。
你似乎对变量如何在C++中工作感到困惑。 使用GCC编译您的程序时,会显示:C++ 识别字符串 问题已经得到解答,非常感谢。,c++,string,visual-c++,C++,String,Visual C++,你似乎对变量如何在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类型的变量时才会使用该变量,而您
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
中的局部变量(您可以将它们声明为全局变量,但最好将它们保留为局部变量):
然后还有一系列其他错误,例如email.find(at!=std::string::npos)
而不是email.find(at)!=std::string::npos
,但您最终会找到它们
PS:我知道一些编程老师喜欢编写代码,比如
std::string at=“@”但是我觉得这太傻了。写email.find(“@”)
完全可以,额外的变量什么也买不到。您的问题在于代码的一部分:
class emailverify
{
public: // global variables/functions
std::string test;
std::string email;
std::string at = "@";
std::string period = ".";
};
它不定义全局变量或函数,而是声明类。主函数中没有电子邮件或测试变量,也没有定义或声明
如果您想坚持使用全局对象,您可以通过
创建emailverify类型的全局对象并使用其成员,或者通过将所有对象设置为静态对象并通过::
(emailverify::test
)进行访问,或者将类
更改为命名空间
,但这也需要在类之外定义它们()
但是,你可以把他们当作本地人使用,现在不用担心这些。非常感谢!我之所以尝试使用这门课,是因为我们的老师建议我们使用它。@A.j.Schenker:啊,我看不出一门课在这里有什么用处。但是如果您想尝试,您必须定义该类的变量intmain(){emailverify e;
,然后将成员变量称为e.test
,e.email
,等等。但是请注意您声明的本地test
变量,它将与e.test
不同。我只是试着这么做,但对它的理解还不够透彻,无法实现全局变量。/谢谢!
class emailverify
{
public: // global variables/functions
std::string test;
std::string email;
std::string at = "@";
std::string period = ".";
};