
| ✨博客主页 | ||
|---|---|---|
| 何曾参静谧的博客(✅关注、👍点赞、⭐收藏、🎠转发) | ||
| 📚全部专栏(专栏会有变化,以最新发布为准) | ||
| 「Win」Windows程序设计 | 「IDE」集成开发环境 | 「定制」定制开发集合 |
| 「C/C++」C/C++程序设计 | 「DSA」数据结构与算法 | 「UG/NX」NX二次开发 |
| 「QT」QT5程序设计 | 「File」数据文件格式 | 「UG/NX」BlockUI集合 |
| 「Py」Python程序设计 | 「Math」探秘数学世界 | 「PK」Parasolid函数说明 |
| 「Web」前后端全栈开发 | 「En」英语从零到一 | 👍占位符 |
| 「AI」人工智能大模型 | 「书」书籍阅读笔记 | |
在 C++ 中,判断一个结构体(struct)是否被赋值过,通常需要根据成员变量的类型采取不同的方法。以下是几种常见情况的处理方式:
方法 1:使用默认值 + 手动标记
如果结构体的成员变量有合理的默认值(如 int 默认为 0,string 默认为空 ""),可以初始化时设置这些默认值,并额外增加一个 bool 标记是否被赋值:
#include <string>
struct MyStruct {
int num = 0; // 默认 0
std::string str = ""; // 默认空字符串
bool is_assigned = false; // 标记是否被赋值过
};
int main() {
MyStruct data;
if (!data.is_assigned) {
std::cout << "结构体未被赋值!" << std::endl;
}
// 赋值后
data.num = 42;
data.str = "Hello";
data.is_assigned = true;
if (data.is_assigned) {
std::cout << "结构体已被赋值!" << std::endl;
}
return 0;
}
适用场景:适用于所有情况,但需要手动维护 is_assigned 标记。
方法 2:使用 std::optional(C++17 及以上)
std::optional 可以表示一个变量是否有值,适用于所有可复制的类型:
#include

最低0.47元/天 解锁文章
1596

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



