编辑“︁
C++11
”︁(章节)
跳转到导航
跳转到搜索
Template:Editnotice load/content
警告:
您没有登录。如果您进行任何编辑,您的IP地址会公开展示。如果您
登录
或
创建账号
,您的编辑会以您的用户名署名,此外还有其他益处。
反垃圾检查。
不要
加入这个!
=== 正規表示式 === 過去許多或多或少標準化的程式庫被建立用來處理[[正規表示式]]。有鑑於這些演算法的使用非常普遍,因此標準程式庫將會包含他們,並使用各種[[物件導向語言]]的潛力。 這個新的程式庫,被定義於<code><nowiki><regex></nowiki></code>標頭檔,由幾個新的類別所組成: * 正規表示式(樣式)以樣板類<code>basic_regex</code>的實體表示 * 樣式匹配的情況以樣板類<code>match_results</code>的實體表示 函式<code>regex_search</code>是用來搜尋樣式;若要搜尋並取代,則要使用函式<code>regex_replace</code>,該函式會回傳一個新的字串。演算法<code>regex_search</code>和<code>regex_replace</code>接受一個正規表示式(樣式)和一個字串,並將該樣式匹配的情況儲存在struct <code>match_results</code>。 底下描述了<code>match_results</code>的使用情況: <syntaxhighlight lang="cpp"> const char *reg_esp = "[ ,.\\t\\n;:]" ; // 分隔字元列表 std::regex rgx(reg_esp) ; // 'regex'是樣板類'basic_regex'以型別為'char' // 的參數具現化的實體 std::cmatch match ; // 'cmatch'是樣板類match_results'以型別為'const char *' // '的參數具現化的實體 const char *target = "Polytechnic University of Turin " ; // 辨別所有被分隔字元所分隔的字 if( regex_search( target, match, rgx ) ) { // 若此種字存在 const size_t n = match.size(); for( size_t a = 0 ; a < n ; a++ ) { string str( match[a].first, match[a].second ) ; cout << str << "\n" ; } } </syntaxhighlight> 注意雙反斜線的使用,因為C++將反斜線作為跳脫字元使用。但C++11的[[#新的字串字面值|raw string]]可以用來避免此一問題。函式庫<regex>不需要改動到現有的標頭檔,同時也不需要對現有的語言作擴展。
摘要:
请注意,所有对Local Chinese Wikipedia的贡献均可能会被其他贡献者编辑、修改或删除。如果您不希望您的文字作品被随意编辑,请不要在此提交。
您同时也向我们承诺,您提交的内容为您自己所创作,或是复制自公共领域或类似自由来源(详情请见
Project:著作权
)。
未经许可,请勿提交受著作权保护的作品!
取消
编辑帮助
(在新窗口中打开)
导航菜单
个人工具
未登录
讨论
贡献
创建账号
登录
命名空间
页面
讨论
大陆简体
不转换
简体
繁體
大陆简体
香港繁體
澳門繁體
大马简体
新加坡简体
臺灣正體
查看
阅读
编辑
查看历史
更多
搜索
导航
首页
最近更改
随机页面
MediaWiki帮助
工具
链入页面
相关更改
特殊页面
页面信息