c++ - 如何在类中编写优化的构造函数 >
问题描述
我写了一个电子邮件课程,但我不确定这是否是编写这个的最佳方式......这是它的代码......
class email
{
string value;
string domain;
string com;
string username;
string encrypted;
bool state ;
public:
email(const string& val)
:value{ val}, state{false},com(),domain(),username(),encrypted()
{
for (int i = 0; i < value.size(); ++i)
{
if (value[i] == '@')
{
username = value.substr(0, i);
for (int j = i; j < value.size(); ++j)
{
if (value[j] == '.')
{
domain = value.substr(i, j);
com = value.substr(j+1, value.size()-1);
state = true;
}
}
}
}
if (state)
{
for (auto letter : value)
{
if (letter == ';' || letter == '\'' || letter == '[' || letter == ']')
{
state = false;
}
}
} else throw "invalid string";
if (state)
{
encrypted = username;
for (int i = 0; i < username.size() / 2; ++i)
{
swap(encrypted[i], encrypted[encrypted.size() - 1 - i]);
encrypted[i] = static_cast<char>(static_cast<int>(encrypted[i]) + 3);
}
}else throw "invalid charecters";
}
const string& get_domain() { return domain; }
const string& get_username() { return username; }
const string& get_com() { return com; }
const string& get_enc() { return encrypted; }
const bool good () const { return state; }
};
它还没有完成,这只是我记忆中的一个快速草图,因为我现在没有实际的代码,我的问题是我应该创建另一个类来支持电子邮件类..还是这是正确的方法?我在构造函数中写了很多代码,这就是我担心的。
解决方案
如果你已经完成了你的工作,你可以打破 for 循环。第一个for:找到'@'后不必循环到最后第三个for:发现错误后,可以立即抛出
推荐阅读
- java - Spring Boot错误的json值
- android - Android 12 - PROVISIONING_SUCCESSFUL Intent 从未收到
- laravel - 我一直在尝试在 laravel 8 版上使用 unisharp 文件管理器上传图像,这就是我得到的。请帮帮我
- sql-server - 使用 where 子句动态连接表
- javascript - 如何将 JSON.stringify 显示为 HTML 作为值
- php - WordPress:获取也使用第二分类的分类术语
- wordpress - Wordpress 根据用户名分配用户角色
- http - 仅在应用层级别支持 URL 路径的概念?
- java - 使用 Scanner 依赖默认编码
- python - 使用 python 发送一个 zip 文件作为响应