C++ stringstream
本文最后更新于64 天前,其中的信息可能已经过时,如有错误请发送邮件到2401292661@qq.com

stringstream 是 C++ 标准库中 std::basic_stringstream 类的一个实例,专用于在字符串上进行输入和输出操作。它继承了 std::basic_iostream 的大部分功能。

来自库<sstream>

以下默认使用的命名空间为std

构造函数

  • stringstream():创建一个空的字符串流。
  • stringstream(const string& str):用给定的字符串初始化字符串流。
  • stringstream(ios_base::openmode mode):用指定的打开模式创建字符串流。
  • stringstream(const string& str, ios_base::openmode mode):用给定的字符串和打开模式初始化字符串流。

输入和输出

  • operator<<:用于将数据插入到流中。这些数据会被转换为字符串并添加到流的缓冲区。

    stringstream ss;
    ss << 123 << " ABC";  //ss为123 ABC
    
  • operator>>:用于从流中提取数据,将其转换为相应的类型。

    stringstrea ss("12 ABC");
    int num;
    ss >> number; //若ss为12 ABC,则number=12
    

管理字符串内容

  • str():返回流中当前字符串的拷贝。

    stringstream ss("12 ABC");
    string content=ss.str();
    cout << ss.str(); //ss不能直接cout,必须转换为字符串才能
    
  • str(const string& s):用新字符串替代当前流的内容。

    stringstream ss("123 ABC");
    ss.str("New content");
    

流状态

stringstream 对象在操作过程中如果发生错误,通常不会直接抛出异常或报错。相反,它会设置相应的状态标志(如 eofbitfailbitbadbit)来表示错误状态。

流状态标志

  • eofbit:流到达文件或数据的末尾。
  • failbit:流操作失败,例如尝试读取不符合预期格式的数据。
  • badbit:流出现严重错误,通常是I/O错误。
  • goodbit:流处于良好状态,没有设置其他错误标志

检查流状态

在C++中,使用流对象的成员函数来检查流的状态。

  • eof:如果流已经到达文件结束,则返回true。
  • fail():如果流操作失败,则返回true。
  • bad():如果流出现严重错误,则返回true。
  • good():如果流状态良好,则返回true。

清除流状态

  • clear():重置流的状态标志,如eofbitfailbitbadbit,使得流可以在出错后重新使用。

    stringstream ss;
    ...
    if(!ss.good())
        ss.clear(); //流被设置了错误状态标志,重置状态标志
    

管理流位置

  • seekg():设置输入位置指针。输入表示输入到其他变量中。g即get,从流中获取数据。

    stringstream ss("123 ABC");
    ss.seekg(4);    //设置到A的位置
    string t;
    ss >> t;  //t=ABC
    
  • seekp():设置输出位置指针。输出表示输出到流。p即print,向流中print

    stringstream ss("123 ABC");
    ss.seekp(1);    //设置到2的位置
    ss << "New content";    //ss=1New content
    
  • tellg():返回当前的输入位置指针。

    streampos pos = ss.tellg();
    
  • tellp():返回当前输出位置指针。

    streampos pos = ss.tellp();
    

读取整行

  • getline():从流中读取一行文本。

    stringstream ss("123 ABC\n569 DEF");
    string line;
    getline(ss,line);   //line=123 ABC
    

     

文末附加内容
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇