c++中的空字段和不存在的字段
empty fields and nonexistent fields in C++
我正在阅读《c++编程原理与实践》第2版,第23章中有一个关于字段的理论问题
- 空字段和不存在字段的区别是什么?
我能在书中找到的最好的东西是关于什么是场的信息。用我的话来说,它是格式化整数值以控制它们在输出上的显示方式的方法。例如,setw()
机械手可以用来改变数字在输出上的显示方式。
我在谷歌上也找不到任何东西,所以如果有人能给我一些快速简短的评论,那就帮我大忙了。
或者我应该问
什么是空字段,什么是不存在的字段?
编辑:我正在阅读的章节被称为"文本操作",Bjarne在这里引入正则表达式来读取表(4列和许多行),以查看表中的所有信息是否与模式
这是另一个论坛的答案,一个好人为我回答:)
#include <iostream>
#include <string>
#include <regex>
void display_field( const std::string& text, const std::string& name )
{
// the field that we are interested in is the marked subexpression ([[:alnum:]]*)
// ie. zero or more alphanumeric characters immediately after 'name='
const std::regex regex( name + '=' + "([[:alnum:]]*)" ) ;
std::smatch match_results ;
std::regex_search( text, match_results, regex ) ;
std::cout << "'" << name << "' == " ;
if( match_results.empty() ) std::cout << " --- (nonexistent field)nn" ;
else if( match_results[1].length() == 0 ) std::cout << "'' --- (empty field)nn" ;
else std::cout << "'" << match_results[1] << "' --- (non-empty field)nn" ;
}
int main()
{
const std::string text = "name=etrusks email= posts=168 phone= " ;
for( std::string fn : { "name", "email", "posts", "age", "phone", "address" } )
display_field( text, fn ) ;
}
这是一个很好的答案,所以很高兴:)
输出:'name' == 'etrusks'——(非空字段)
'email' == "——(空字段)
'posts' == '168'——(非空字段)
'age' ==——(不存在字段)
'phone' == "——(空字段)
'address' ==——(不存在字段)
相关文章:
- 链接器找不到在虚拟类 c++ 中访问的静态字段的符号
- 如何在QByteArray中放置和检索位字段而不会感到痛苦?
- 错误:字段'dateOfBirth'的类型不完整'Poco::Data::Date'
- sizeof 函数如何在带和不带位字段的结构上工作?(填充)
- 如何在不混淆字段的情况下声明复数?
- protobuf,如何在protobuf消息中遍历所有集合字段,我不知道详细信息?(C++)
- 无法访问 Arduino 结构字段。错误"退出状态 1。xxxx 不命名类型"
- uninit_member:非静态类成员字段 m_cJobState.bstatus 未在此构造函数中初始化,也不在其调
- C++ Arduino:向下转换后,子字段不引用原始地址
- 为什么将值分配给一个位字段不给予相同的值
- 在C++实例中,字段不会初始化为其默认值.静态字段怎么样
- 为什么枚举与 Windows 中的位字段不兼容
- 删除不存在的字段的子字段
- 如何检查结构的类型或字段是否存在
- 在c++中正确的对象强制转换,值字段不会改变
- 类字段不能在函数内部访问
- c++中的空字段和不存在的字段
- 为什么本地类中的字段不能是静态的
- 用于检查字段是否存在的Sqlite查询失败
- QODBCResult::exec: 无法执行语句:"[Microsoft][ODBC SQL Server Driver]COUNT 字段不正确或语法错误