C++读取中文或英文文件空格分割

复制代码
// show file content - sbumpc() example
#include <iostream>     // std::cout, std::streambuf
#include <fstream>      // std::ifstream
#include <cstdio>       // EOF

using namespace std;


bool readWord(std::istream& in, std::string& word) {
    int c;
    std::streambuf& sb = *in.rdbuf();
    word.clear();
    cout << "---------------1";

    while ((c = sb.sbumpc()) != EOF) {
        if (c == ' ' || c == '\n' || c == '\r' || c == '\t' || c == '\v' ||
            c == '\f' || c == '\0') {
            
            if (word.empty()) {
                if (c == '\n') {
                    cout << "---------------2";
                    word += "END";
                    return true;
                }
                continue;
            } else {
                if (c == '\n')
                    sb.sungetc(); // advance to next position
                    cout << "---------------5";
                return true;
            }

        }
        cout << "---------------3";
        word.push_back(c);
    }
    // trigger eofbit
    in.get();
    cout << "---------------4" << word.empty();
    return !word.empty();
}

int main () {
  
  std::ifstream fin ("test.txt");
  std::string word;
  while (readWord(fin, word)) {
    cout << word << endl;
  }
  
  
  return 0;
}
复制代码

test.txt

asdf 你好 中国 万里 长城
asaa asa as asa
vdvsd
sjklmn
sdfsdf

输出:

 

posted on   TMatrix52  阅读(554)  评论(0编辑  收藏  举报

编辑推荐:
· 智能桌面机器人:用.NET IoT库控制舵机并多方法播放表情
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
阅读排行:
· 新年开篇:在本地部署DeepSeek大模型实现联网增强的AI应用
· DeepSeek火爆全网,官网宕机?本地部署一个随便玩「LLM探索」
· Janus Pro:DeepSeek 开源革新,多模态 AI 的未来
· 上周热点回顾(1.20-1.26)
· 【译】.NET 升级助手现在支持升级到集中式包管理

导航

< 2025年1月 >
29 30 31 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31 1
2 3 4 5 6 7 8

统计

点击右上角即可分享
微信分享提示