You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++中如何读取到终止字符@为止的多段可分隔句子输入

C++读取带编号句子直到@终止的实现方案

核心逻辑

输入的分隔符可以是空格或换行,因此必须采用逐字符读取的方式覆盖所有输入场景,遇到终止符@时直接结束读取即可。如果需要拆分单条句子,可以通过带编号句子的固定格式(如数字.开头)做分割判断。

最简实现(先读取全部有效内容再处理)

如果你不需要读取时就拆分句子,可以直接把所有@之前的内容全部读入内存,后续再做拆分处理:

#include <iostream>
#include <string>

int main() {
    std::string input_content;
    char ch;
    // 逐字符读取所有内容,直到遇到@或输入结束
    while (std::cin.get(ch) && ch != '@') {
        input_content += ch;
    }
    // 后续可自行对input_content做句子拆分逻辑
    return 0;
}

注意:这里必须使用std::cin.get()读取字符,不能用std::cin >> ch,后者会默认跳过空格、换行等空白符,会丢失输入中的分隔符信息。

读取时直接拆分句子的实现

如果需要在读取阶段就拆分出单条带编号的句子,可以通过匹配句子开头的数字.格式实现,自动忽略句子之间的空格、换行分隔符:

#include <iostream>
#include <vector>
#include <string>
#include <cctype>

int main() {
    std::vector<std::string> sentences;
    std::string current_sentence;
    char ch;
    while (std::cin.get(ch)) {
        // 遇到终止符直接结束,保存最后一句未存入的内容
        if (ch == '@') {
            if (!current_sentence.empty()) {
                sentences.push_back(current_sentence);
            }
            break;
        }
        // 匹配新句子的开头:数字 + . 的格式
        if (std::isdigit(ch) && !current_sentence.empty()) {
            char next_ch;
            if (std::cin.get(next_ch)) {
                if (next_ch == '.') {
                    // 确认是新句子开头,保存上一句
                    sentences.push_back(current_sentence);
                    current_sentence.clear();
                    // 把预读的两个字符退回输入流,重新读取
                    std::cin.unget();
                    std::cin.unget();
                    continue;
                }
                // 不是句子开头,退回预读字符
                std::cin.unget();
            }
        }
        current_sentence += ch;
    }
    // 测试输出读取到的句子
    for (size_t i = 0; i < sentences.size(); i++) {
        std::cout << "句子" << i + 1 << ": " << sentences[i] << std::endl;
    }
    return 0;
}

适用场景说明

  • 上述实现兼容空格、换行作为分隔符的输入格式
  • 支持多位数的句子编号(如12. xxx也可正常识别)
  • 句子内部的空格、换行可以正常保留,不会被误删

内容的提问来源于stack exchange,提问作者sirac emin topçu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 05:54:00