C++ stringstream格式化输出输入详情

yizhihongxing

C++ 的 stringstream 类是一个基于字符串的流,我们可以用它进行格式化输入和输出。在使用 stringstream 进行格式化输出时,可以通过设置类似 printf 函数的格式字符串来控制输出的格式。同时,在使用 stringstream 进行格式化输入时,我们可以根据一个给定的格式字符串来解析输入的字符串数据。接下来,我将详细介绍如何使用 C++ stringstream 进行格式化输入输出。

格式化输出

下面是一个简单的代码示例,展示了如何使用 stringstream 进行格式化输出:

#include <sstream>
#include <iostream>

int main()
{
    std::stringstream ss;
    int i = 12;
    double d = 3.14;
    std::string s = "hello";
    ss << "i = " << i << ", d = " << d << ", s = " << s;
    std::cout << ss.str() << std::endl;
    return 0;
}

代码中,我们首先通过创建一个 stringstream 对象 ss 来存储要输出的数据。然后,我们依次使用串联操作符 << 将不同类型的数据加入到 ss 中,最后输出整个 ss 容器中的内容。

在这个例子中,我们输出了一个 int 类型、一个 double 类型和一个字符串类型的变量。这里,ostringstream 会自动将输入流中添加的各种类型的数据转换为字符串类型,并存储在它的内部缓冲区中。我们最后调用 stringstream 对象的 str() 方法,将缓冲区中的字符串结果返回。通过这个例子,我们可以看到 stringstream 是将不同类型的数据格式化为字符串的一个好工具。

下面是另一个简单的代码示例:

#include <sstream>
#include <iostream>

int main()
{
    std::stringstream ss;
    int i = 12;
    double d = 3.14;
    std::string s = "hello";
    ss << std::hex << i << " " << d << " " << s;
    std::cout << ss.str() << std::endl;
    return 0;
}

代码中,我们首先通过创建一个 stringstream 对象 ss 来存储要输出的数据。然后,我们使用串联操作符 << 不仅将数据加入 ss 中,而且使用 std::hex 格式标记,将 i 变量的输出格式设置为十六进制。最终结果是将 i 转化为十六进制数字来输出,另外 d 和 s 变量也被输出到了结果中。

格式化输入

下面是一个简单的代码示例,展示了如何使用 stringstream 进行格式化输入:

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

int main()
{
    std::string input = "12 3.14 hello";
    std::stringstream ss(input); // 从 input 字符串中读取数据
    int i;
    double d;
    std::string s;
    ss >> i >> d >> s; // 格式化输入 字符串到不同的类型
    if (ss.fail()) { // 判断流是否发生错误,避免输出无效数据
        std::cout << "格式化输入发生错误" << std::endl;
        return 1;
    }
    std::cout << "i = " << i << ", d = " << d << ", s = " << s << std::endl;
    return 0;
}

代码中,我们首先创建了一个字符串 input,其中包含一个 int 类型、一个 double 类型和一个 std::string 类型的数据,这些数据被空格分隔开。然后,我们使用 stringstream 来读取字符串 input 中的数据,依次将它们转换为 int、double 和 std::string 类型,并存储在变量 i、d 和 s 中。最后,我们输出这些变量的值。

另外一个简单的代码示例是:

#include <iostream>
#include <sstream>

int main()
{
    std::string input = "1.23 2.34 3.45";
    std::stringstream ss(input); // 从 input 字符串中读取数据
    double a[3];
    for (int i = 0; i < 3; ++i) {
        ss >> a[i];
        if (ss.fail()) { // 判断流是否发生错误,避免输出无效数据
            std::cout << "格式化输入发生错误" << std::endl;
            return 1;
        }
    }
    std::cout << "a[0] = " << a[0] << ", a[1] = " << a[1] << ", a[2] = " << a[2] << std::endl;
    return 0;
}

代码中,我们创建了一个包含三个浮点数的字符串 input,这些浮点数之间用空格隔开。然后,我们使用 stringstream 类从 input 字符串中读取数据,并将其存储到一个浮点数数组中。最终,我们输出了浮点数数组中存储的数据。

通过这个代码示例及上个示例,我们了解了使用 stringstream 进行格式化输入时的一些常见方法和技巧。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++ stringstream格式化输出输入详情 - Python技术站

(0)
上一篇 2023年5月23日
下一篇 2023年5月23日

相关文章

  • C++ new、delete(new[]、delete[])操作符重载需要注意的问题

    C++中的 new 和 delete 操作符是用来管理动态内存分配的。在某些情况下,我们需要对 new 和 delete 进行重载,以满足我们特定的需求。但是重载这些操作符需要特别注意一些问题。 为什么需要重载? 一些使用场景: 改变内存分配行为,比如使用某种特殊的内存池来提高内存分配性能。 跟踪某些内存分配和释放,例如在调试模式下记录分配的位置和大小,释放…

    C 2023年5月23日
    00
  • IIS解析json的配置方法汇总

    当使用IIS托管网站时,如果需要让网站支持解析输入的json数据,需要对IIS进行相应的配置。以下是配置IIS解析json数据的具体步骤: 步骤一:安装ASP.NET Core Module 在配置IIS支持json数据解析之前,我们需要确保系统中已安装了ASP.NET Core Module。可以通过以下步骤进行安装: 打开服务器管理器,在左侧导航栏选择“…

    C 2023年5月23日
    00
  • c语言程序调试方法整理

    c语言程序调试方法整理 在编写C语言程序时,避免不了出现各种各样的错误。调试是找出和修正错误的过程。本文总结了C语言程序的常见调试方法,希望能帮助读者更好地解决程序中的各种问题。 1. 查看编译器的警告信息 编译器在编译的过程中,会输出警告信息。这些警告信息是对程序不标准或者有潜在问题的地方的提示。查看这些警告信息,可以帮助我们找出一些对程序运行有可能产生负…

    C 2023年5月23日
    00
  • python 统计代码耗时的几种方法分享

    Python 统计代码耗时的几种方法分享 在 Python 当中,我们经常需要统计代码的耗时,以便了解程序的性能情况,以及针对性优化。本文将分享几种统计 Python 代码耗时的方法。 1. 使用 time 模块 time 模块是 Python 自带的模块,可以非常方便地获取当前时间以及计算时间差。 示例代码: import time # 获取开始时间 st…

    C 2023年5月22日
    00
  • C语言超全面讲解函数的使用方法上

    C语言超全面讲解函数的使用方法上 函数的定义与调用 函数是C语言中的基本操作,在程序设计中起到了至关重要的作用。C语言中的函数定义包括函数的返回类型、函数名、参数列表以及函数体。函数的调用可以通过函数名加参数列表的方式实现。 下面是一个简单的函数定义和调用的示例: #include<stdio.h> int max(int a, int b) {…

    C 2023年5月22日
    00
  • C 程序 递归函数反转给定的数字

    下面是 “C 程序 递归函数反转给定的数字” 的完整使用攻略。 什么是递归函数? 递归函数是一种在函数体内调用自身的函数,这个过程被称为递归。使用递归函数可以编写简洁而优美的代码。 程序简介 此程序旨在使用递归函数反转给定的数字。例如,如果给定数字为 12345,程序将返回 54321。 使用方法 以下是使用此程序的步骤。 1. 确保您已经安装了 C 语言编…

    C 2023年5月9日
    00
  • 布隆过滤器(bloom filter)及php和redis实现布隆过滤器的方法

    布隆过滤器及实现方法攻略 什么是布隆过滤器? 布隆过滤器是一种非常实用的数据结构,它可以用于快速判断一个元素是否在一个集合中。布隆过滤器可以有效地降低查询一个元素是否在集合中的时间复杂度,但是会带来一定的误判率。它由早在1970年提出,以其高效的查询速度和内存占用率低的特点而广受欢迎,被广泛应用于网络爬虫等场景中。 布隆过滤器的实现原理 布隆过滤器采用的是概…

    C 2023年5月22日
    00
  • 整理AngularJS框架使用过程当中的一些性能优化要点

    当在使用AngularJS框架进行开发的过程中,需要注意性能优化,以避免应用程序出现延迟和卡顿现象。下面是整理AngularJS框架使用过程中的一些性能优化要点的攻略。 1. 使用一次性绑定语法 使用AngularJS的双向数据绑定特性时,会引发监听器的频繁触发,影响应用的性能。AngularJS推荐使用一次性绑定语法”{{::expression}}”,它…

    C 2023年5月22日
    00
合作推广
合作推广
分享本页
返回顶部