内核格式化(C++)
参考《C++ Primer Plus》P788
iostream族支持 程序 与 终端 之间的I/O
fstream族支持 程序 与 文件 之间的I/O
sstream族支持 程序 与 string对象 之间的I/O,也就是说,可以使用cout的ostream方法将格式化信息写入string对象中,并使用istream方法(如getline())来读取string对象中的信息。读取string对象中的格式化信息或将格式化信息写入string对象中被称为内核格式化(incore formatting)。
ostringstream
#include <iostream>
#include <sstream>
#include <string>
int main()
{
using namespace std;
ostringstream outstr;
string hdisk;
cout << "What's the name of your hard disk? ";
getline(cin, hdisk); // cin -> hdisk int cap;
cout << "What's its capacity in GB? ";
cin >> cap; // write formatted information to string stream //(格式化信息 -> string对象)
outstr << "The hard disk " << hdisk << " has a capacity of "
<< cap << " gigabytes.\n";
string result = outstr.str();
cout << result; return ;
}
ostringstream类有一个名为str()的成员函数,该函数返回一个被初始化为缓冲区内容的字符串对象。
string result = outstr.str()
使用str()方法可以“冻结”该对象,这样便不能将信息写入该对象中。istringstream
#include <iostream>
#include <sstream>
#include <string> int main()
{
using namespace std;
string lit = "It was a dark and stormy day, and "
" the full moon glowed brilliantly. ";
istringstream instr(lit); //use buf for input lit -> instr
string word;
while (instr >> word) //read a word a time
cout << word << endl; return ;
}
istringstream类允许使用istream方法族读取istringstream对象中的数据,istringstream对象可以使用string对象进行初始化。

应用

CMakeLists.txt
cmake_minimum_required( VERSION 2.8 )
project( stream ) # 添加c++ 11标准支持
set( CMAKE_BUILD_TYPE Release )
set( CMAKE_CXX_FLAGS "-std=c++11" ) # 寻找OpenCV库
find_package( OpenCV REQUIRED )
# 添加头文件
include_directories( ${OpenCV_INCLUDE_DIRS} ) add_executable( sstream stringstream.cpp )
# 链接OpenCV库
target_link_libraries( sstream ${OpenCV_LIBS} )
stringstream.cpp
#include <iostream>
#include <fstream>
#include <sstream> #include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp> using namespace std;
using namespace cv; void readFrame(int index); int main()
{
for (int i = ; i < ; i++)
{
readFrame(i);
}
return ;
} void readFrame(int index)
{
string dir = "./data/";
string rgb = "rgb";
string dep = "depth";
string Ext = ".png"; stringstream ss;
ss << dir << rgb << index << Ext; // ./data/rgb1.png
string filename;
ss >> filename; Mat color = imread( filename );//rgb
imshow(filename,color);
//waitKey(0); ss.clear();
ss << dir << dep << index << Ext; // ./data/depth1.png
filename.clear();
ss >> filename; Mat depth = imread( filename , -);//depth
imshow(filename,depth);
waitKey(); destroyAllWindows(); }
此程序可以将rgb图和对应的深度图按序号依次读出,并显示。
重点是:
ss << dir << rgb << index << Ext;
ss >> filename; 可以将字符串类型(rgb)和整数类型(index)拼起来,index不断更新,可以读取不同下标的文件。
内核格式化(C++)的更多相关文章
- Linux内核配置编译及基本调试方法
一.Linux内核配置编译 1. 交叉编译设置:make ARCH=arm CROSS_COMPILE=arm-linux- 注:也可以直接修改顶层Makefile ARCH ?= arm CROSS ...
- C++ Primer Plus 文章17章 进,输出和文件
文章17章 进.输出和文件 1.当到达输入句子.他将刷新输出缓冲区满输出电流 2.streambuf分类 它提供了用于各种操作的一个缓冲 ios_base类表示流的一般特征 ios基础的类ios_ba ...
- cpp(第十七章)
1.baseic_ostream<charT,traits>& write(const char_type *s,streamsize n),cout.write()第一个参数提供 ...
- DC/OS安装
dc/os: https://dcos.io/ 安装文档-docker:https://docs.mesosphere.com/1.11/installing/oss/custom/system-re ...
- C++ Primer Plus (Stephen Prata 著)
第1章 预备知识 (已看) 第2章 开始学习C++ (已看) 第3章 处理数据 (已看) 第4章 复合类型 (已看) 第5章 循环和关系表达式 (已看) 第6章 分支语句和逻辑运算符 (已看) 第7章 ...
- C++_IO与文件5-文件的输入与输出
大多数计算机程序都使用了文件.文件本身是存储在某种设备上的一系列字节. 通常,操作系统管理文件,跟踪它们的位置.大小.创建时间等. 除非在操作系统级别上编程,否则通常不必担心这些事情. 真正需要的是将 ...
- C++ 基础知识回顾(I/O)
[1] I/O基础 大多数计算机语言的输入输出的实现都是以语言本身为基础的,但是C/C++没有这样做.C语言最初把I/O留给了编译器实现人员.这样做的一个原因是可以提供足够的自由度,使之最适合目标机器 ...
- 《C++ Primer Plus》学习笔记11
<C++ Primer Plus>学习笔记11 第17章 输入.输出和文件 <<<<<<<<<<<<<< ...
- C++ 词汇表
C++词汇表 A abort() 特殊函数 如果一个函数抛出异常,但在通往异常函数的调用链中找不到与之匹配的catch,则该程序通常以此函数调用终止 abs ...
随机推荐
- POJ 2585.Window Pains 拓扑排序
Window Pains Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 1888 Accepted: 944 Descr ...
- 前后台交互(打开前端页面,不传递任何数据,发送ajax请求)
1.打开前端,不传递任何数据 <script src="./jquery.min.js"></script> <script> $(docume ...
- inline 引起undefined reference to
main.cc:57: undefined reference to `evpp::udp::UdpDecoder::GetHeader()'collect2: error: ld returned ...
- 【UML】UML类图关系(泛化 、继承、实现、依赖、关联、聚合、组合)
http://www.cnblogs.com/olvo/archive/2012/05/03/2481014.html 继承.实现.依赖.关联.聚合.组合的联系与区别 分别介绍这几种关系: 继承 指的 ...
- 原生js:click和onclick本质的区别
原生javascript的click在w3c里边的阐述是DOM button对象,也是html DOM click() 方法,可模拟在按钮上的一次鼠标单击. button 对象代表 HTML 文档中的 ...
- HTML5/CSS3基础
1. HTML 1.1 什么是HTML HTML是用来制作网页的标记语言 HTML是Hypertext Markup Language的英文缩写,即超文本标记语言 HTML语言是一种标记语言,不需要编 ...
- 解决启动nginx时报80端口被占用的问题
如何解决启动nginx时报80端口被占用 最近公司的的一个服务器上需要部署多个项目,但80端口只有一个,所有只有使用Nginx来代理,当访问域名时就可以自动 转到IP:端口号,而不需要在域名后面加端口 ...
- 2018.07.20 bzoj1614: Telephone Lines架设电话线(二分+最短路)
传送门 这题直接做显然gg" role="presentation" style="position: relative;">gggg,看这数据 ...
- CodeForces 611C New Year and Domino (动态规划,DP)
题意:给定一个h*w的网格,里面只有.和#,.表示空的,#表示禁止的,然后有q个询问,询问中给你两个坐标,分别是左上和右下,求在这两者中间的有多少种(竖着和横着)两个相邻的点. 析:一看到这个题目,肯 ...
- MemCache 安全使用原则(自己整理,仅供参考)
// 触发器:作用是检查缓存时否可用(不用add做触发器),避免缓存不可用时add返回false按非首次登陆处理,导致不能增加成长值. memCachedClient.get(memCacheKey) ...
istringstream