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

如何从txt文件中提取打印单个单词且不遗漏原文件的换行内容?

问题原因
  • 现有代码使用>>运算符读取文件内容,该运算符默认会忽略所有空白字符(包括空格、换行符、制表符等),因此原文件的换行信息会全部丢失
  • 原代码中returnMe.resize(200)的逻辑会在字符串开头填充200个空字符,导致输出开头存在多余空白,需要删除
修改后代码
#include <iostream>
#include <string>
#include <fstream>
#include <sstream>
using namespace std;

string readFileToString(string fileName) {
    ifstream file(fileName);
    string line;
    string returnMe;

    // 逐行读取保留换行边界
    while (getline(file, line)) {
        istringstream line_stream(line);
        string word;
        bool is_first_word = true;
        // 拆分当前行的单个单词
        while (line_stream >> word) {
            if (!is_first_word) {
                returnMe += " ";
            }
            returnMe += word;
            is_first_word = false;
        }
        // 每行处理完追加换行,保留原文件换行结构
        returnMe += "\n";
    }
    file.close();
    // 可选:如果不需要在文件末尾额外加换行,可加下面这行代码删除末尾多余换行
    // if (!returnMe.empty()) returnMe.pop_back();
    return returnMe;
}

int main() {
    string fileName = "example.txt";
    cout << readFileToString(fileName);
    return 0;
}
逻辑说明
  • 采用「逐行读取+行内拆单词」的实现逻辑,每读完一行主动追加换行符,完全保留原文件的换行结构
  • 行内通过istringstream拆分单词,仅在单词之间补空格,避免行尾出现多余空格
  • 改用ifstream做只读文件读取,C++11及以上标准支持直接传入string类型的文件名,不需要手动调用c_str()转换
  • 已删除错误的resize(200)逻辑,避免输出开头出现多余空字符

内容的提问来源于stack exchange,提问作者Shon

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 02:54:05