C ++中的空字段和不存在的字段

时间:2015-07-17 09:55:47

标签: c++ field

我正在阅读“使用C ++第2版编程原理和实践”,第23章中有关于这样的字段的理论问题

  
      
  1. 空字段和不存在字段之间有什么区别?
  2.   

我能在书中找到的最好的东西是有关哪个领域的信息。在我看来,这是格式化整数值以控制它们在输出上的显示方式。 例如,setw()操纵器可用于更改数字在输出上的显示方式。

我在谷歌中找不到任何东西,所以如果有人可以放弃一些快速,简短的评论,它会对我有所帮助。

或许我最好问一下

  

什么是空字段,什么是不存在的字段?

编辑:我正在阅读的章节称为“文本操作”,Bjarne在此处引入正则表达式来读取表格(4列和大量行)以查看表格中的所有信息是否匹配模式

1 个答案:

答案 0 :(得分:0)

这是另一个论坛的回答,一个好人为我回答:)

#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)\n\n" ;
    else if( match_results[1].length() == 0 ) std::cout << "''  --- (empty field)\n\n" ;
    else std::cout << "'" << match_results[1] << "'  --- (non-empty field)\n\n" ;
}

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 ) ;
}

这只是一个非常好的答案,对此感到高兴:)

输出:

  

&#39;名称&#39; ==&#39; etrusks&#39; ---(非空场)
  &#39;电子邮件&#39; ==&#39;&#39; ---(空场)
  &#39;的帖子&#39; ==&#39; 168&#39; ---(非空场)
  &#39;年龄&#39; == ---(不存在的字段)
  &#39;电话&#39; ==&#39;&#39; ---(空场)
  &#39;地址&#39; == ---(不存在的字段)