【问题标题】:empty fields and nonexistent fields in C++C++ 中的空字段和不存在的字段
【发布时间】:2015-07-17 09:55:47
【问题描述】:

我正在阅读“Programming Principles and Practice Using C++ 2nd edition”,第 23 章中有一个关于这样的领域的理论问题

  1. 空字段和不存在的字段有什么区别?

我在书中能找到的最好的东西是关于什么是字段的信息。用我的话来说,这是格式化整数值以控制它们在输出中的显示方式的方法。 例如,setw() 操纵器可用于更改数字在输出中的显示方式。

我在 Google 中也找不到任何东西,所以如果有人能快速发表一些简短的评论,那将对我有很大帮助。

或者我最好问问

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

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

【问题讨论】:

  • 什么是空字段?是设置为 nullptr 的字段吗?
  • 我不知道它是什么,我不记得在我的书中和 Google 上都提到过它。这使得回答这个问题变得更加困难。它有时会在上下文中提及,但没有提及它是什么
  • 我无法理解 1 件事。我得到的只是反对票,所以这可能意味着这个问题非常愚蠢,另一方面,如果那样的话,它也会很容易回答,但看起来不像。有人可以向我解释这个问题有什么问题吗?
  • 投反对票的意思是“这个问题没有显示出任何研究成果;它不清楚或没有用。”阅读最后一部分。我们不想惩罚你。我们想让这个问题在搜索结果中处于低位,因为可能很少有人会尝试找到它。
  • 我以前从未听说过C++ 中的“空白字段”。它可能是本书作者创建的名称。不读这本书我无法给你答案。

标签: c++ field


【解决方案1】:

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

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

这只是一个很好的答案,为此感到高兴:)

输出:

'name' == 'etrusks' ---(非空字段)
'电子邮件' == '' ---(空字段)
'posts' == '168' ---(非空字段)
'年龄' == ---(不存在的字段)
'电话' == '' ---(空字段)
'地址' == ---(不存在的字段)

【讨论】:

    猜你喜欢
    • 2016-06-26
    • 1970-01-01
    • 1970-01-01
    • 2020-01-09
    • 1970-01-01
    • 1970-01-01
    • 2015-01-11
    • 2013-04-16
    • 1970-01-01
    相关资源
    最近更新 更多