【C++ Primer | 08】IO库

一、istringstream类

描述:从流中提取数据,支持 >> 操作

这里字符串可以包括多个单词,单词之间使用空格分开

#include <iostream>   
#include <sstream>   
using namespace std;
int main()
{istringstream istr("1 56.7");cout << istr.str() << endl;//直接输出字符串的数据 "1 56.7"   string str = istr.str();//函数str()返回一个字符串   cout << str << endl;int n;double d;//以空格为界,把istringstream中数据取出,应进行类型转换   istr >> n;//第一个数为整型数据,输出1   istr >> d;//第二个数位浮点数,输出56.7  cout << n << endl;cout << d << endl;d = 0;n = 0;  istr >> d;//istringstream第一个数要自动变成浮点型,输出仍为1   istr >> n;//istringstream第二个数要自动变成整型,有数字的阶段,输出为56      cout << d << endl;cout << n << endl;return 1;
}

输出结果: 

 

 

二、ostringstream类

描述:把其他类型的数据写入流(往流中写入数据),支持 << 操作

#include <sstream>
#include <string>
#include <iostream>
using namespace std;int main()
{ostringstream ostr1;ostringstream ostr2("abc");ostr1 << "ostr1" << 2012 << endl;    // 格式化,此处endl也将格式化进ostr1中cout << ostr1.str();long curPos = ostr2.tellp(); //返回当前插入的索引位置(即put pointer的值),从0开始 cout << "curPos = " << curPos << endl;ostr2.seekp(2);    // 手动设置put pointer的值ostr2.put('g');    // 在put pointer的位置上写入'g',并将put pointer指向下一个字符位置cout << ostr2.str() << endl;/*----------------------------------------------------------------------------重复使用同一个ostringstream对象时,建议:1:调用clear()清除当前错误控制状态,其原型为 void clear (iostate state=goodbit);2:调用str("")将缓冲区清零,清除脏数据----------------------------------------------------------------------------*/ostr2.clear();ostr2.str("");cout << ostr2.str() << endl;ostr2.str("_def");cout << ostr2.str() << endl;ostr2 << "gggghh";    // 覆盖原有的数据,并自动增加缓冲区cout << ostr2.str() << endl;
}

输出结果:

相关练习:

1. 151. 翻转字符串里的单词

参考资料

1. istringstream、ostringstream、stringstream 类介绍

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/385368.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

gdb调试(如何跟踪指定进程)

使用gdb调试的时候&#xff0c;gdb只能跟踪一个进程。可以在fork函数调用之前&#xff0c;通过指令设置gdb调试工具跟踪父进程或者是跟踪子进程。默认跟踪父进程。 set follow-fork-mode child 命令设置gdb在fork之后跟踪子进程。 set follow-fork-mode parent 设置跟踪父进程…

【Leetcode | 01】Backtracking

回溯算法序号题号117. 电话号码的字母组合222. 括号生成 39. 组合总和 40. 组合总和 II 46. 全排列 47. 全排列 II 60. 第k个排列 77. 组合 78. 子集 90. 子集 II 93. 复原IP地址 131. 分割回文串 216. 组合总和 III 306. 累加数 357. 计算各个位数不同的数字个数 401. 二进…

1033. 旧键盘打字(20)

旧键盘上坏了几个键&#xff0c;于是在敲一段文字的时候&#xff0c;对应的字符就不会出现。现在给出应该输入的一段文字、以及坏掉的那些键&#xff0c;打出的结果文字会是怎样&#xff1f; 输入格式&#xff1a; 输入在2行中分别给出坏掉的那些键、以及应该输入的文字。其中对…

1038. 统计同成绩学生(20)

本题要求读入N名学生的成绩&#xff0c;将获得某一给定分数的学生人数输出。 输入格式&#xff1a; 输入在第1行给出不超过105的正整数N&#xff0c;即学生总人数。随后1行给出N名学生的百分制整数成绩&#xff0c;中间以空格分隔。最后1行给出要查询的分数个数K&#xff08;不…

EXEC函数族的一般规律

事实上&#xff0c;只有execve是真正的系统调用&#xff0c;其它五个函数最终都调用execve&#xff0c;所以execve在man手册第2节&#xff0c;其它函数在man手册第3节。这些函数之间的关系如下图所示。

exit与_exit函fork与vfork函数

#include <stdlib.h> void exit(int status); #include <unistd.h> void _exit(int status); exit函数与_exit函数一样&#xff0c;都是系统函数&#xff0c;且都是用来终止一个进程的&#xff0c;无论在程序中的什么位置&#xff0c;只要执行这exit或_exit系统…

1042. 字符统计(20)

请编写程序&#xff0c;找出一段给定文字中出现最频繁的那个英文字母。 输入格式&#xff1a; 输入在一行中给出一个长度不超过1000的字符串。字符串由ASCII码表中任意可见字符及空格组成&#xff0c;至少包含1个英文字母&#xff0c;以回车结束&#xff08;回车不算在内&#…

孤儿进程与僵尸进程

孤儿进程&#xff1a;父进程先于子进程结束&#xff08;遇到return、exit、异常终止等情况时&#xff09;&#xff0c;则子进程成为孤儿进程&#xff0c;子进程的父进程成为init进程&#xff0c;称为init进程领养孤儿进程。可以通过getppid函数来查看孤儿进程的父进程ID&#x…

1043. 输出PATest(20)

给定一个长度不超过10000的、仅由英文字母构成的字符串。请将字符重新调整顺序&#xff0c;按“PATestPATest....”这样的顺序输出&#xff0c;并忽略其它字符。当然&#xff0c;六种字符的个数不一定是一样多的&#xff0c;若某种字符已经输出完&#xff0c;则余下的字符仍按P…

wait函数

#include <sys/types.h> #include <sys/wait.h> pid_t wait(int *status); 僵尸进程。进程结束后放弃了几乎所有的内存空间&#xff0c;没有任何可以执行的代码&#xff0c;也不能被调度&#xff0c;仅仅在进程列表中保留着一个位置&#xff0c;记载着该进程的退出…

map与unordered_map

时间复杂度&#xff1a; mapunordered_mapOrderingincreasing orderno orderImplementationSelf balancing BSTHash Tablesearch timelog(n) O(1&#xff09;: 平均水ping O(n&#xff09;&#xff1a;最糟糕情况 Insertion timelog(n) RebalanceSame sa searchDelete timelo…

waitpid函数

#include <sys/wait.h> #include <sys/types.h> pid_t waitpid(pid_t pid, int *status, int options); 作用&#xff1a;同wait&#xff0c;但可指定pid进程清理&#xff0c;可以不阻塞。 waitpid函数的第二个参数int *status跟wait函数的形参一样&#xff0c;…

进程间通信的方法

Linux环境下&#xff0c;进程地址空间相互独立&#xff0c;每个进程各自有不同的用户地址空间。任何一个进程的全局变量在另一个进程中都看不到&#xff0c;所以进程和进程之间不能相互访问&#xff0c;要交换数据必须通过内核&#xff0c;在内核中开辟一块缓冲区&#xff0c;进…

管道的概念(匿名管道)

管道是一种最基本的IPC机制&#xff0c;作用于有血缘关系的进程之间&#xff0c;完成数据传递。调用pipe系统函数即可创建一个管道。管道有如下特质&#xff1a;1.其本质是一个伪文件&#xff08;实为内核缓冲区&#xff09;&#xff0c;伪文件即不是真正的文件&#xff0c;不占…

1023. 组个最小数 (20)

给定数字0-9各若干个。你可以以任意顺序排列这些数字&#xff0c;但必须全部使用。目标是使得最后得到的数尽可能小&#xff08;注意0不能做首位&#xff09;。例如&#xff1a;给定两个0&#xff0c;两个1&#xff0c;三个5&#xff0c;一个8&#xff0c;我们得到的最小的数就…

pipe函数

#include <unistd.h> int pipe(int pipefd[2]); 作用&#xff1a;创建管道 成功&#xff1a;0&#xff1b;失败&#xff1a;-1&#xff0c;设置errno 函数调用成功返回r/w两个文件描述符。无需open&#xff0c;但需手动close。规定&#xff1a;fd[0] …

二分查找总结

二分查找法作为一种常见的查找方法&#xff0c;将原本是线性时间提升到了对数时间范围&#xff0c;大大缩短了搜索时间&#xff0c;具有很大的应用场景&#xff0c;而在LeetCode中&#xff0c;要运用二分搜索法来解的题目也有很多&#xff0c;但是实际上二分查找法的查找目标有…

管道的读写行为

使用管道需要注意以下4种特殊情况&#xff08;默认都是阻塞I/O操作&#xff0c;没有设置O_NONBLOCK标志&#xff09;&#xff1a; 1. 如果所有指向管道写端的文件描述符都关闭了&#xff08;管道写端引用计数为0&#xff09;&#xff0c;而仍然有进程从管道的读端读数据&#…

【C++ Primer | 08】课后习题答案

文章目录练习8.13练习8.13 include <iostream> #include <sstream> #include <fstream> #include <string> #include <vector> using namespace std;struct PersonInfo {string name;vector<string> phones; };bool valid(const string&…

管道缓冲区大小

可以使用ulimit –a 命令来查看当前系统中创建管道文件所对应的内核缓冲区大小。通常为&#xff1a;pipe size 4K&#xff0c;即一个页面大小。也可以使用fpathconf函数来查看&#xff1a; #include <unistd.h> long fpathconf(int fd, int name); 当需要查看管道的大…