#include <sstream>常用函数介绍

<sstream> 是 C++ 标准库中的一个头文件,提供了用于在字符串和流之间进行转换的类。这些类包括 std::istringstreamstd::ostringstreamstd::stringstream,它们分别用于从字符串读取数据、向字符串写入数据以及同时进行读写操作。以下是这些类的常用函数和用法介绍:

1. std::istringstream

std::istringstream 用于从字符串中读取数据,类似于从文件或流中读取数据。

构造函数
std::istringstream(std::string str);
  • std::string str:初始化字符串。

常用方法
  • std::istringstream::str():获取或设置内部字符串。

  • std::istringstream::clear():清除错误标志。

  • std::istringstream::eof():检查是否到达文件末尾。

  • std::istringstream::fail():检查是否发生错误。

  • std::istringstream::good():检查是否一切正常。

  • std::istringstream::ignore():忽略输入流中的字符。

  • std::istringstream::peek():查看下一个字符,但不提取。

  • std::istringstream::get():提取一个字符。

  • std::istringstream::getline():提取一行。

示例
#include <iostream>
#include <sstream>
#include <string>

int main() {
    std::string input = "123 456 789";
    std::istringstream iss(input);

    int a, b, c;
    iss >> a >> b >> c;

    std::cout << "a = " << a << ", b = " << b << ", c = " << c << std::endl;

    return 0;
}

2. std::ostringstream

std::ostringstream 用于向字符串写入数据,类似于向文件或流中写入数据。

构造函数
std::ostringstream();
常用方法
  • std::ostringstream::str():获取或设置内部字符串。

  • std::ostringstream::clear():清除错误标志。

  • std::ostringstream::flush():刷新缓冲区。

  • std::ostringstream::put():写入一个字符。

  • std::ostringstream::write():写入一段数据。

示例
#include <iostream>
#include <sstream>
#include <string>

int main() {
    std::ostringstream oss;

    oss << "Hello, " << "World!" << std::endl;

    std::string result = oss.str();
    std::cout << result;

    return 0;
}

3. std::stringstream

std::stringstream 用于同时进行读写操作,类似于一个双向流。

构造函数
std::stringstream(std::string str);
  • std::string str:初始化字符串。

常用方法
  • std::stringstream::str():获取或设置内部字符串。

  • std::stringstream::clear():清除错误标志。

  • std::stringstream::eof():检查是否到达文件末尾。

  • std::stringstream::fail():检查是否发生错误。

  • std::stringstream::good():检查是否一切正常。

  • std::stringstream::ignore():忽略输入流中的字符。

  • std::stringstream::peek():查看下一个字符,但不提取。

  • std::stringstream::get():提取一个字符。

  • std::stringstream::getline():提取一行。

  • std::stringstream::put():写入一个字符。

  • std::stringstream::write():写入一段数据。

示例
#include <iostream>
#include <sstream>
#include <string>

int main() {
    std::stringstream ss("123 456 789");

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

    ss.clear(); // 清除错误标志
    ss.str(""); // 清空内容

    ss << "Hello, " << "World!" << std::endl;

    std::string result = ss.str();
    std::cout << result;

    return 0;
}

4. 常用操作

字符串分割

std::istringstream 可以方便地用于字符串分割:

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

std::vector<std::string> split(const std::string& str, char delimiter) {
    std::vector<std::string> tokens;
    std::istringstream iss(str);
    std::string token;

    while (std::getline(iss, token, delimiter)) {
        tokens.push_back(token);
    }

    return tokens;
}

int main() {
    std::string input = "apple,banana,cherry";
    std::vector<std::string> tokens = split(input, ',');

    for (const auto& token : tokens) {
        std::cout << token << std::endl;
    }

    return 0;
}
格式化输出

std::ostringstream 可以用于格式化输出:

#include <iostream>
#include <sstream>
#include <iomanip>

int main() {
    int number = 12345;
    std::ostringstream oss;

    oss << "Number: " << std::setw(10) << std::setfill('0') << number;

    std::string result = oss.str();
    std::cout << result << std::endl;

    return 0;
}

总结

<sstream> 提供了 std::istringstreamstd::ostringstreamstd::stringstream,用于在字符串和流之间进行转换。这些类可以方便地用于字符串分割、格式化输出和双向读写操作。通过合理使用这些类,可以简化字符串处理任务。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值