<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>TR1 on dyama&#39;s page</title>
		<link>https://dyama.org/tag/tr1/</link>
		<description>Recent content in TR1 on dyama&#39;s page</description>
		<generator>Hugo</generator>
		<language>ja</language>
		
		
		
		
			<lastBuildDate>Sun, 09 Jun 2013 00:00:59 +0900</lastBuildDate>
		
			<atom:link href="https://dyama.org/tag/tr1/index.xml" rel="self" type="application/rss+xml" />
			<item>
				<title>tr1の正規表現ライブラリを使う</title>
				<link>https://dyama.org/2013/06/823/</link>
				<pubDate>Sun, 09 Jun 2013 00:00:59 +0900</pubDate>
				<guid>https://dyama.org/2013/06/823/</guid>
				<description>&lt;p&gt;Microsoft Visual Studio 2008 の SP1 からは &lt;a href=&#34;https://ja.wikipedia.org/wiki/C%2B%2B_Technical_Report_1&#34;&gt;C++ Technical Report 1&lt;/a&gt; (TR1)をサポートしているので、&lt;a href=&#34;https://dyama.org/2012/10/386/&#34;&gt;Boost&lt;/a&gt; やPCRE などのライブラリを用いずに正規表現を扱うことができます。&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f7f7f7;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-cpp&#34; data-lang=&#34;cpp&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;#include&lt;/span&gt; &lt;span style=&#34;color:#57606a&#34;&gt;&amp;lt;iostream&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;#include&lt;/span&gt; &lt;span style=&#34;color:#57606a&#34;&gt;&amp;lt;string&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;#include&lt;/span&gt; &lt;span style=&#34;color:#57606a&#34;&gt;&amp;lt;regex&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#57606a&#34;&gt;// usage: a.exe pattern replace-to&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;using&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;namespace&lt;/span&gt; std&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;int&lt;/span&gt; &lt;span style=&#34;color:#6639ba&#34;&gt;main&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;int&lt;/span&gt; c&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;char&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;**&lt;/span&gt; v&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;{&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#cf222e&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;c &lt;span style=&#34;color:#0550ae&#34;&gt;!=&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;3&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;tr1&lt;span style=&#34;color:#0550ae&#34;&gt;::&lt;/span&gt;regex ex&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;v&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;]);&lt;/span&gt; &lt;span style=&#34;color:#57606a&#34;&gt;// 正規表現オブジェクト&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#cf222e&#34;&gt;char&lt;/span&gt; buf&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;256&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;];&lt;/span&gt;       &lt;span style=&#34;color:#57606a&#34;&gt;// 読み取り用のバッファ&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;while&lt;/span&gt; &lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;cin&lt;span style=&#34;color:#1f2328&#34;&gt;.&lt;/span&gt;getline&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;buf&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#cf222e&#34;&gt;sizeof&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;buf&lt;span style=&#34;color:#1f2328&#34;&gt;)))&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    cout &lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; tr1&lt;span style=&#34;color:#0550ae&#34;&gt;::&lt;/span&gt;regex_replace&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;string&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;buf&lt;span style=&#34;color:#1f2328&#34;&gt;),&lt;/span&gt; ex&lt;span style=&#34;color:#1f2328&#34;&gt;,&lt;/span&gt; string&lt;span style=&#34;color:#1f2328&#34;&gt;(&lt;/span&gt;v&lt;span style=&#34;color:#1f2328&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#0550ae&#34;&gt;2&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;]))&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;&amp;lt;&amp;lt;&lt;/span&gt; endl&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#cf222e&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#0550ae&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#1f2328&#34;&gt;}&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;a href=&#34;https://dyama.org/2012/10/386/&#34;&gt;Boost のコード&lt;/a&gt;と比べれば、名前空間が boost から tr1 に変わったこと、regex ヘッダが標準パスに入ったこと、regex_replace() の第3引数が char* から std::string に変わったことくらいでしょうか。Boost からの移植ですので、互換性があって当然ですね。&lt;/p&gt;</description>
			</item>
	</channel>
</rss>
