Стандартная библиотека C++ <sstream>

В программировании на C++ преобразование между строками и числами — обычная задача.

sstream— это компонент стандартной библиотеки C++, который предоставляет удобный способ работы со строковыми потоками (позволяя обрабатывать строки как потоки).

<sstream>Позволяет использовать строки как потоки ввода/вывода, что делает очень простым чтение данных из строк или запись данных в строки.

определение

sstream— это пространство имен в стандартной библиотеке C++, которое содержит несколько классов для работы со строковыми потоками, включая:

  • istringstream: используется для чтения данных из строки.
  • ostringstream: используется для записи данных в строку.
  • stringstream: даistringstreamиostringstreamсочетание, позволяет одновременно выполнять операции чтения и записи.

Синтаксис

ИспользованиеsstreamБазовый синтаксис выглядит следующим образом:

#include <sstream>

// 使用istringstream
std::istringstream iss("some data");

// 使用ostringstream
std::ostringstream oss;

// 使用stringstream
std::stringstream ss;

Пример

Чтение данных из строки

Ниже показано использованиеistringstreamПример чтения целых чисел и чисел с плавающей запятой из строки:

Пример

#include <iostream>
#include <sstream>

int main() {
    std::string data = "10 20.5";
    std::istringstream iss(data);

    int i;
    double d;

    iss >> i >> d;

    std::cout << "Целое: " << i << std::endl;
    std::cout << "Вещественное: " << d << std::endl;

    return 0;
}

Результат вывода:

Integer: 10
Double: 20.5

Запись данных в строку

Ниже показано использованиеostringstreamПример записи данных в строку:

Пример

#include <iostream>
#include <sstream>

int main() {
    std::ostringstream oss;
    int i = 100;
    double d = 200.5;

    oss << i << " " << d;

    std::string result = oss.str();
    std::cout << "Результирующая строка: " << result << std::endl;

    return 0;
}

Результат вывода:

Resulting string: 100 200.5

Использование stringstream для операций чтения и записи

Ниже показано использованиеstringstreamПример одновременного выполнения операций чтения и записи:

Пример

#include <iostream>
#include <sstream>

int main() {
    std::string data = "30 40.5";
    std::stringstream ss(data);

    int i;
    double d;

    // Чтение данных из stringstream
    ss >> i >> d;

    std::cout << "Целое число: " << i << ", Дробное число: " << d << std::endl;

    // Запись данных в stringstream
    ss.str(""); // Очистить stringstream
    ss << "Новые данные: " << 50 << " " << 60.7;

    std::string newData = ss.str();
    std::cout << "Строка новых данных: " << newData << std::endl;

    return 0;
}

Результат вывода:

Read Integer: 30, Double: 40.5
New data string: New data: 50 60.7

Итог

sstreamявляется очень полезным компонентом стандартной библиотеки C++, упрощающим преобразование между строками и базовыми типами данных. Из приведённых выше примеров видно, как использоватьistringstream、ostringstreamиstringstreamдля реализации этих преобразований. Освоение этих навыков поможет вам более эффективно обрабатывать строковые данные в программировании на C++.

Другие расширения