内核格式化(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 ...
随机推荐
- Python发送邮件不需要发件人密码认证
#!/usr/bin/python # coding: UTF-8 import smtplib from email.mime.text import MIMEText receivers_list ...
- 深入了解 php 底层机制 (-)洪定坤
- jqueryAjax的使用
1. 导入等下我们要使用的文件AjaxMsgHelper.cs和DataHelper.cs他们的代码如下 using System;using System.Collections.Generic;u ...
- 记录下 UTF6 GBK 转换函数
int GBK2UTF8(char *szGbk,char *szUtf8,int Len) { // 先将多字节GBK(CP_ACP或ANSI)转换成宽字符UTF-16 // 得到转换后,所需要的内 ...
- 2018.09.19 atcoder Card Game for Three(组合数学)
传送门 简单组合数学想优化想了半天啊233. 我们只需考虑翻开n张A,b张B,c张C且最后一张为A的选法数. 显然还剩下m+k−b−cm+k-b-cm+k−b−c张牌没有选. 这样的话无论前n+b+c ...
- vue实现消息的无缝滚动效果
export default { data() { return { animate:false, items:[ {name:"马云"}, {name:"雷军" ...
- 配置 struts2 时掉进 web.xml 的坑
这个声明不好用 <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN&quo ...
- Apache Struts 2 Documentation Core Developers Guide
http://struts.apache.org/docs/core-developers-guide.html
- web service 项目 和 普通 web项目 的 区别
web service 面向的是开发者(需要再次开发) 普通web 面向的是用户(直接使用)
- Tensorflow從源碼編譯
从源代码构建 从源代码构建 TensorFlow pip 软件包并将其安装在 Ubuntu Linux 和 macOS 上.尽管这些说明可能适用于其他系统,但仅针对 Ubuntu 和 macOS 进行 ...
istringstream