<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet type="text/xsl" href="rss.xsl"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>My Site Blog</title>
        <link>https://github.com/blog</link>
        <description>My Site Blog</description>
        <lastBuildDate>Mon, 08 Dec 2025 00:00:00 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>zh-Hans</language>
        <item>
            <title><![CDATA[windows 下 C++ 环境配置]]></title>
            <link>https://github.com/blog/2025/12/08/20251208/blog</link>
            <guid>https://github.com/blog/2025/12/08/20251208/blog</guid>
            <pubDate>Mon, 08 Dec 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[我们将使用 MSYS2 来进行 C++ 环境管理。]]></description>
            <content:encoded><![CDATA[<p>我们将使用 MSYS2 来进行 <code>C++</code> 环境管理。</p>
<!-- -->
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="步骤-1-安装-msys2">步骤 1. 安装 <code>MSYS2</code><a href="https://github.com/blog/2025/12/08/20251208/blog#%E6%AD%A5%E9%AA%A4-1-%E5%AE%89%E8%A3%85-msys2" class="hash-link" aria-label="步骤-1-安装-msys2的直接链接" title="步骤-1-安装-msys2的直接链接" translate="no">​</a></h3>
<p>下载地址：<a href="https://www.msys2.org/" target="_blank" rel="noopener noreferrer" class="">https://www.msys2.org/</a></p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="步骤-2-更新系统与包">步骤 2. 更新系统与包<a href="https://github.com/blog/2025/12/08/20251208/blog#%E6%AD%A5%E9%AA%A4-2-%E6%9B%B4%E6%96%B0%E7%B3%BB%E7%BB%9F%E4%B8%8E%E5%8C%85" class="hash-link" aria-label="步骤 2. 更新系统与包的直接链接" title="步骤 2. 更新系统与包的直接链接" translate="no">​</a></h3>
<p>安装好下载的文件以后，运行程序 <code>MSYS2 MSYS</code>，该程序用来使用 pacman 维护环境，打开 <code>MinGW-w64</code> 终端，执行命令</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">pacman -Syu</span><br></span></code></pre></div></div>
<p>该命令用来完整升级系统（包括更新 pacman 自己 + 系统核心库 + 所有软件包）。<br>
<!-- -->执行完后 关闭终端，重新打开，再执行：</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">pacman -Su</span><br></span></code></pre></div></div>
<p>在数据库已经最新的前提下，再执行一次仅升级包的操作。<br>
<!-- -->这里的参数作用分别是：<br>
<!-- -->-S ＝ 同步软件包（从官方仓库获取最新列表）<br>
<!-- -->-y ＝ 刷新包数据库（更新可用版本信息）<br>
<!-- -->-u ＝ 升级系统所有已安装的软件包</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="步骤-3-安装-c-编译器mingw-w64">步骤 3. 安装 C++ 编译器（MinGW-w64）<a href="https://github.com/blog/2025/12/08/20251208/blog#%E6%AD%A5%E9%AA%A4-3-%E5%AE%89%E8%A3%85-c-%E7%BC%96%E8%AF%91%E5%99%A8mingw-w64" class="hash-link" aria-label="步骤 3. 安装 C++ 编译器（MinGW-w64）的直接链接" title="步骤 3. 安装 C++ 编译器（MinGW-w64）的直接链接" translate="no">​</a></h3>
<p>安装 64 位版本：</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">pacman -S mingw-w64-x86_64-gcc</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">pacman -S mingw-w64-x86_64-gdb</span><br></span></code></pre></div></div>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="步骤-4-使用-mingw64-shell">步骤 4. 使用 MinGW64 shell<a href="https://github.com/blog/2025/12/08/20251208/blog#%E6%AD%A5%E9%AA%A4-4-%E4%BD%BF%E7%94%A8-mingw64-shell" class="hash-link" aria-label="步骤 4. 使用 MinGW64 shell的直接链接" title="步骤 4. 使用 MinGW64 shell的直接链接" translate="no">​</a></h3>
<p>开始菜单里打开：MSYS2 MinGW x64，该 Shell 可以使用 g++。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="步骤-5-加入-windows-path用于-vscode">步骤 5. 加入 Windows PATH（用于 VSCode）<a href="https://github.com/blog/2025/12/08/20251208/blog#%E6%AD%A5%E9%AA%A4-5-%E5%8A%A0%E5%85%A5-windows-path%E7%94%A8%E4%BA%8E-vscode" class="hash-link" aria-label="步骤 5. 加入 Windows PATH（用于 VSCode）的直接链接" title="步骤 5. 加入 Windows PATH（用于 VSCode）的直接链接" translate="no">​</a></h3>
<p>把路径 <code>C:\msys64\mingw64\bin</code> 加入系统环境变量 PATH。</p>
<h3 class="anchor anchorTargetStickyNavbar_Vzrq" id="步骤-6-验证安装">步骤 6. 验证安装<a href="https://github.com/blog/2025/12/08/20251208/blog#%E6%AD%A5%E9%AA%A4-6-%E9%AA%8C%E8%AF%81%E5%AE%89%E8%A3%85" class="hash-link" aria-label="步骤 6. 验证安装的直接链接" title="步骤 6. 验证安装的直接链接" translate="no">​</a></h3>
<p>打开 PowerShell 或 CMD：</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">g++ --version</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">gdb --version</span><br></span></code></pre></div></div>
<p>若能显示版本号，说明正确安装并配置好了路径。</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[一些关于读入数据的问题]]></title>
            <link>https://github.com/blog/2025/11/26/202511/read-data</link>
            <guid>https://github.com/blog/2025/11/26/202511/read-data</guid>
            <pubDate>Wed, 26 Nov 2025 00:00:00 GMT</pubDate>
            <description><![CDATA[1.逗号运算符]]></description>
            <content:encoded><![CDATA[<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="1逗号运算符">1.逗号运算符<a href="https://github.com/blog/2025/11/26/202511/read-data#1%E9%80%97%E5%8F%B7%E8%BF%90%E7%AE%97%E7%AC%A6" class="hash-link" aria-label="1.逗号运算符的直接链接" title="1.逗号运算符的直接链接" translate="no">​</a></h4>
<p>使用逗号运算符是为了把几个表达式放在一起。</p>
<p>整个逗号表达式的值为系列中最后一个表达式的值。</p>
<p>从本质上讲，逗号的作用是将一系列运算按顺序执行。</p>
<!-- -->
<blockquote>
<p>表达式1, 表达式2</p>
</blockquote>
<p>求解过程是：先求解表达式 1，再求解表达式 2。整个逗号表达式的值是表达式 2 的值。</p>
<p>最右边的那个表达式的值将作为整个逗号表达式的值，其他表达式的值会被丢弃。</p>
<p>例如：</p>
<div class="language-c++ codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-c++ codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">var = (count=19, incr=10, count+1);</span><br></span></code></pre></div></div>
<p>在这里，首先把 <code>count</code> 赋值为 19，把 <code>incr</code> 赋值为 10，然后把 <code>count</code> 加 1，最后，把最右边表达式 <code>count+1</code> 的计算结果 20 赋给 <code>var</code>。上面表达式中的括号是必需的，因为逗号运算符的优先级低于赋值操作符。</p>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="2scanf函数">2.<code>scanf</code>函数<a href="https://github.com/blog/2025/11/26/202511/read-data#2scanf%E5%87%BD%E6%95%B0" class="hash-link" aria-label="2scanf函数的直接链接" title="2scanf函数的直接链接" translate="no">​</a></h4>
<p><code>scanf</code>函数接收输入数据时，遇以下情况结束一个数据的输入：</p>
<ul>
<li class="">遇空格、“回车”、“跳格”键。</li>
<li class="">遇输入结束符。</li>
<li class="">遇非法输入。</li>
</ul>
<p>例如：</p>
<div class="language-c++ codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-c++ codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">char str[80]; </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">scanf("%s",str); </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">printf("%s",str);</span><br></span></code></pre></div></div>
<p>输入：I love you!<br>
<!-- -->输出：I<br>
<!-- -->原因：<code>scanf</code>遇空格结束读取。</p>
<p>解决方案：</p>
<div class="language-c++ codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-c++ codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">char str[80]; </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">scanf("%[^\n]",str); //读到'\n'结束读取</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">printf("%s",str);</span><br></span></code></pre></div></div>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="3cin和scanf的返回值">3.<code>cin</code>和<code>scanf</code>的返回值<a href="https://github.com/blog/2025/11/26/202511/read-data#3cin%E5%92%8Cscanf%E7%9A%84%E8%BF%94%E5%9B%9E%E5%80%BC" class="hash-link" aria-label="3cin和scanf的返回值的直接链接" title="3cin和scanf的返回值的直接链接" translate="no">​</a></h4>
<h5 class="anchor anchorTargetStickyNavbar_Vzrq" id="cin">cin<a href="https://github.com/blog/2025/11/26/202511/read-data#cin" class="hash-link" aria-label="cin的直接链接" title="cin的直接链接" translate="no">​</a></h5>
<p>严格的说，cin的返回值是一个错误的说法。</p>
<blockquote>
<p>下面两段文字引用自「C++ primer」,可直接跳过。</p>
<blockquote>
<div class="language-c++ codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-c++ codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">std::cin &gt;&gt; v1 &gt;&gt; v2</span><br></span></code></pre></div></div>
<p>它(指<code>输入运算符 &gt;&gt;</code>)接受一个<code>istream</code>作为其左侧运算对象，接受一个对象作为其右侧对象。它从给定的<code>istream</code>读入数据，并存入给定对象中。与输出运算符类似，输入运算符返回其左侧运算对象作为其计算结果。</p>
</blockquote>
</blockquote>
<blockquote>
<blockquote>
<div class="language-c++ codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-c++ codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">while (std::cin &gt;&gt; val)</span><br></span></code></pre></div></div>
<p>当我们使用一个<code>istream</code>对象作为条件时，其效果时检测流的状态。如果流是有效的，即流未遇到错误，那么检测成功。当遇到<code>文件结束符</code>(<code>end-of-file</code>)，或遇到一个无效输入时(例如读入的值不是一个整数)，<code>istream</code>对象的状态会变为无效。处于无效状态的<code>istream</code>对象会使条件变为假。</p>
</blockquote>
</blockquote>
<div class="language-c++ codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-c++ codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">while(cin &gt;&gt; x)</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">{</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    // do something</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">}</span><br></span></code></pre></div></div>
<p>上面的程序会不断的读入值，赋给 <span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>x</mi></mrow><annotation encoding="application/x-tex">x</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.4306em"></span><span class="mord mathnormal">x</span></span></span></span>，直到遇到错误或者结束符。</p>
<div class="language-c++ codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-c++ codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">while (cin &gt;&gt; x, x)</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">{</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    // do something</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">}</span><br></span></code></pre></div></div>
<p>上面的程序会不断读入值，赋给 <span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>x</mi></mrow><annotation encoding="application/x-tex">x</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.4306em"></span><span class="mord mathnormal">x</span></span></span></span>，当遇到 <span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>x</mi></mrow><annotation encoding="application/x-tex">x</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.4306em"></span><span class="mord mathnormal">x</span></span></span></span> 为0时结束。</p>
<h5 class="anchor anchorTargetStickyNavbar_Vzrq" id="scanf">scanf<a href="https://github.com/blog/2025/11/26/202511/read-data#scanf" class="hash-link" aria-label="scanf的直接链接" title="scanf的直接链接" translate="no">​</a></h5>
<p><code>scanf</code>函数只有在第一个参数为<code>NULL</code>(空指针)的情况下，才可能返回<code>EOF</code>，否则，返回成功格式化并赋值的参数个数( <span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo>≥</mo><mn>0</mn></mrow><annotation encoding="application/x-tex"> \ge 0</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.7719em;vertical-align:-0.136em"></span><span class="mrel">≥</span><span class="mspace" style="margin-right:0.2778em"></span></span><span class="base"><span class="strut" style="height:0.6444em"></span><span class="mord">0</span></span></span></span>)。</p>
<p><code>End Of File</code>，在电脑的术语缩写通常为 <code>EOF</code>，在作业系统决定资料源无更多的资料可读取, 在<code>stdio.h</code>中 宏定义为-1</p>
<div class="language-c++ codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-c++ codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">int a, b, c;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">int m = scanf("%d%d%d", &amp;a, &amp;b, &amp;c);</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">cout &lt;&lt; m &lt;&lt; endl;</span><br></span></code></pre></div></div>
<p>我们输入 7 8 9 ，那么<span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>m</mi><mo>=</mo><mn>3</mn></mrow><annotation encoding="application/x-tex">m = 3</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.4306em"></span><span class="mord mathnormal">m</span><span class="mspace" style="margin-right:0.2778em"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2778em"></span></span><span class="base"><span class="strut" style="height:0.6444em"></span><span class="mord">3</span></span></span></span><br>
<!-- -->我们输入 7 8 a， 那么<span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>m</mi><mo>=</mo><mn>2</mn></mrow><annotation encoding="application/x-tex">m = 2</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.4306em"></span><span class="mord mathnormal">m</span><span class="mspace" style="margin-right:0.2778em"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2778em"></span></span><span class="base"><span class="strut" style="height:0.6444em"></span><span class="mord">2</span></span></span></span><br>
<!-- -->我们输入 7 a 8， 那么<span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>m</mi><mo>=</mo><mn>1</mn></mrow><annotation encoding="application/x-tex">m = 1</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.4306em"></span><span class="mord mathnormal">m</span><span class="mspace" style="margin-right:0.2778em"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2778em"></span></span><span class="base"><span class="strut" style="height:0.6444em"></span><span class="mord">1</span></span></span></span><br>
<!-- -->我们输入 a 7 8， 那么<span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>m</mi><mo>=</mo><mn>0</mn></mrow><annotation encoding="application/x-tex">m = 0</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.4306em"></span><span class="mord mathnormal">m</span><span class="mspace" style="margin-right:0.2778em"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2778em"></span></span><span class="base"><span class="strut" style="height:0.6444em"></span><span class="mord">0</span></span></span></span><br>
<!-- -->我们输入ctrl + z（同时按住CTRL键和z键），那么<span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>m</mi><mo>=</mo><mo>−</mo><mn>1</mn></mrow><annotation encoding="application/x-tex">m=-1</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.4306em"></span><span class="mord mathnormal">m</span><span class="mspace" style="margin-right:0.2778em"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2778em"></span></span><span class="base"><span class="strut" style="height:0.7278em;vertical-align:-0.0833em"></span><span class="mord">−</span><span class="mord">1</span></span></span></span></p>
<p>在竞赛中，我们常使用</p>
<div class="language-c++ codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-c++ codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">while (scanf("%d%d", &amp;a, &amp;b) == 2)</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">{</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    // do something</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">}</span><br></span></code></pre></div></div>
<p>或者</p>
<div class="language-c++ codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-c++ codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">while (scanf("%d%d", &amp;a, &amp;b) != EOF)</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">{</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    // do something</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">}</span><br></span></code></pre></div></div>
<p>来处理相关数据输入。</p>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id="4对于本题的数据">4.对于本题的数据<a href="https://github.com/blog/2025/11/26/202511/read-data#4%E5%AF%B9%E4%BA%8E%E6%9C%AC%E9%A2%98%E7%9A%84%E6%95%B0%E6%8D%AE" class="hash-link" aria-label="4.对于本题的数据的直接链接" title="4.对于本题的数据的直接链接" translate="no">​</a></h4>
<h5 class="anchor anchorTargetStickyNavbar_Vzrq" id="第一种办法">第一种办法<a href="https://github.com/blog/2025/11/26/202511/read-data#%E7%AC%AC%E4%B8%80%E7%A7%8D%E5%8A%9E%E6%B3%95" class="hash-link" aria-label="第一种办法的直接链接" title="第一种办法的直接链接" translate="no">​</a></h5>
<p>通过<code>getchar</code>函数读取每个数字后面的字符，当读到换行符时结束。</p>
<div class="language-c++ codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-c++ codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">while (scanf("%d", &amp;u, u)){</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    while (1){</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        scanf("%d", &amp;v);</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        // do something</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        char c = getchar();</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        if (c == '\n') break;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    }</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">}</span><br></span></code></pre></div></div>
<h5 class="anchor anchorTargetStickyNavbar_Vzrq" id="第二种办法">第二种办法<a href="https://github.com/blog/2025/11/26/202511/read-data#%E7%AC%AC%E4%BA%8C%E7%A7%8D%E5%8A%9E%E6%B3%95" class="hash-link" aria-label="第二种办法的直接链接" title="第二种办法的直接链接" translate="no">​</a></h5>
<p>使用<code>istringstream</code></p>
<div class="language-c++ codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-c++ codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">string line;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">while (getline(cin, line) &amp;&amp; line[0] != '0'){</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    istringstream data(line); // data 绑定到刚读入的行</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    data &gt;&gt; u;  // 读取起点</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    while (data &gt;&gt; v){ // 读取指向的点 </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        // do something</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    }</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">}</span><br></span></code></pre></div></div>
<p>需包含头文件<code>sstream</code></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Welcome]]></title>
            <link>https://github.com/blog/welcome</link>
            <guid>https://github.com/blog/welcome</guid>
            <pubDate>Thu, 26 Aug 2021 00:00:00 GMT</pubDate>
            <description><![CDATA[Docusaurus blogging features are powered by the blog plugin.]]></description>
            <content:encoded><![CDATA[<p><a href="https://docusaurus.io/docs/blog" target="_blank" rel="noopener noreferrer" class="">Docusaurus blogging features</a> are powered by the <a href="https://docusaurus.io/docs/api/plugins/@docusaurus/plugin-content-blog" target="_blank" rel="noopener noreferrer" class="">blog plugin</a>.</p>
<p>Here are a few tips you might find useful.</p>
<p>Simply add Markdown files (or folders) to the <code>blog</code> directory.</p>
<p>Regular blog authors can be added to <code>authors.yml</code>.</p>
<p>The blog post date can be extracted from filenames, such as:</p>
<ul>
<li class=""><code>2019-05-30-welcome.md</code></li>
<li class=""><code>2019-05-30-welcome/index.md</code></li>
</ul>
<p>A blog post folder can be convenient to co-locate blog post images:</p>
<p><img decoding="async" loading="lazy" alt="Docusaurus Plushie" src="https://github.com/assets/images/docusaurus-plushie-banner-a60f7593abca1e3eef26a9afa244e4fb.jpeg" width="1500" height="500" class="img_ev3q"></p>
<p>The blog supports tags as well!</p>
<p><strong>And if you don't want a blog</strong>: just delete this directory, and use <code>blog: false</code> in your Docusaurus config.</p>]]></content:encoded>
            <category>Facebook</category>
            <category>Hello</category>
            <category>Docusaurus</category>
        </item>
        <item>
            <title><![CDATA[MDX Blog Post]]></title>
            <link>https://github.com/blog/mdx-blog-post</link>
            <guid>https://github.com/blog/mdx-blog-post</guid>
            <pubDate>Sun, 01 Aug 2021 00:00:00 GMT</pubDate>
            <description><![CDATA[Blog posts support Docusaurus Markdown features, such as MDX.]]></description>
            <content:encoded><![CDATA[<p>Blog posts support <a href="https://docusaurus.io/docs/markdown-features" target="_blank" rel="noopener noreferrer" class="">Docusaurus Markdown features</a>, such as <a href="https://mdxjs.com/" target="_blank" rel="noopener noreferrer" class="">MDX</a>.</p>
<div class="theme-admonition theme-admonition-tip admonition_xJq3 alert alert--success"><div class="admonitionHeading_Gvgb"><span class="admonitionIcon_Rf37"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"></path></svg></span>提示</div><div class="admonitionContent_BuS1"><p>Use the power of React to create interactive blog posts.</p></div></div>
<!-- -->
<p>For example, use JSX to create an interactive button:</p>
<div class="language-js codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_QJqH"><pre tabindex="0" class="prism-code language-js codeBlock_bY9V thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token operator" style="color:#393A34">&lt;</span><span class="token plain">button onClick</span><span class="token operator" style="color:#393A34">=</span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">(</span><span class="token punctuation" style="color:#393A34">)</span><span class="token plain"> </span><span class="token arrow operator" style="color:#393A34">=&gt;</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">alert</span><span class="token punctuation" style="color:#393A34">(</span><span class="token string" style="color:#e3116c">'button clicked!'</span><span class="token punctuation" style="color:#393A34">)</span><span class="token punctuation" style="color:#393A34">}</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token maybe-class-name">Click</span><span class="token plain"> me</span><span class="token operator" style="color:#393A34">!</span><span class="token operator" style="color:#393A34">&lt;</span><span class="token operator" style="color:#393A34">/</span><span class="token plain">button</span><span class="token operator" style="color:#393A34">&gt;</span><br></span></code></pre></div></div>
<button>Click me!</button>]]></content:encoded>
            <category>Docusaurus</category>
        </item>
        <item>
            <title><![CDATA[Long Blog Post]]></title>
            <link>https://github.com/blog/long-blog-post</link>
            <guid>https://github.com/blog/long-blog-post</guid>
            <pubDate>Wed, 29 May 2019 00:00:00 GMT</pubDate>
            <description><![CDATA[This is the summary of a very long blog post,]]></description>
            <content:encoded><![CDATA[<p>This is the summary of a very long blog post,</p>
<p>Use a <code>&lt;!--</code> <code>truncate</code> <code>--&gt;</code> comment to limit blog post size in the list view.</p>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet</p>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet</p>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet</p>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet</p>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet</p>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet</p>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet</p>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet</p>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet</p>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet</p>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet</p>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet</p>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet</p>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet</p>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet</p>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet</p>]]></content:encoded>
            <category>Hello</category>
            <category>Docusaurus</category>
        </item>
        <item>
            <title><![CDATA[First Blog Post]]></title>
            <link>https://github.com/blog/first-blog-post</link>
            <guid>https://github.com/blog/first-blog-post</guid>
            <pubDate>Tue, 28 May 2019 00:00:00 GMT</pubDate>
            <description><![CDATA[Lorem ipsum dolor sit amet...]]></description>
            <content:encoded><![CDATA[<p>Lorem ipsum dolor sit amet...</p>
<p>...consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet</p>]]></content:encoded>
            <category>Hola</category>
            <category>Docusaurus</category>
        </item>
    </channel>
</rss>