stringstream如何使用

小樊
82
2024-10-16 14:42:11

stringstream 是 C++ 中的一個(gè)類,它位于 <sstream> 頭文件中。這個(gè)類允許你在內(nèi)存中讀寫字符串,就像操作文件一樣。它常常用于處理字符串格式的數(shù)據(jù),比如將一個(gè)整數(shù)和一個(gè)字符串組合成一個(gè)復(fù)雜的字符串。

下面是一些基本的使用示例:

1. 包含頭文件

#include <iostream>
#include <sstream>
#include <string>

2. 創(chuàng)建一個(gè) stringstream 對(duì)象

std::stringstream ss;

3. 使用 << 運(yùn)算符向 stringstream 寫入數(shù)據(jù)

ss << "Hello, " << "World!" << std::ends;  // 注意 std::ends 用于添加一個(gè)空行

4. 使用 >> 運(yùn)算符從 stringstream 讀取數(shù)據(jù)

std::string str;
int num;

ss >> str >> num;  // 從 stringstream 中讀取一個(gè)字符串和一個(gè)整數(shù)

std::cout << "String: " << str << ", Number: " << num << std::endl;

在這個(gè)例子中,str 變量將存儲(chǔ) “Hello, World!”,而 num 變量將存儲(chǔ) 0(因?yàn)檫@里沒(méi)有明確指定要讀取的整數(shù)值,所以默認(rèn)讀取的是 0)。

5. 其他一些有用的成員函數(shù)

  • str():返回 stringstream 中存儲(chǔ)的字符串。
  • clear():清除 stringstream 中的所有錯(cuò)誤標(biāo)志。
  • fail():檢查 stringstream 是否遇到了錯(cuò)誤。
  • eof():檢查是否已經(jīng)讀取到了 stringstream 的末尾。

例如:

std::stringstream ss;
ss << "123 456 789";

int a, b, c;
ss >> a >> b >> c;

if (!ss.fail()) {
    std::cout << "a: "<< a << ", b: "<< b << ", c: "<< c << std::endl;
} else {
    std::cout << "Error occurred while reading." << std::endl;
}

在這個(gè)例子中,ss.fail() 將返回 false,因?yàn)樽x取操作成功完成了。如果在讀取過(guò)程中遇到錯(cuò)誤,fail() 將返回 true

0