C/C++格式化输入,输出
C/C++格式化输入,输出
1.C语言
1. 语言函数
scanf();
printf();
sscanf() --> 不安全
sscanf_s() ---> 安全
sprintf() --> 不安全 ----> sprintf_s()
2. 说下遇到的坑
string s1,s2;
int i=0;
sscanf(dest,"%d,%s,%s",&i,s1,s2); // -->如果时这样写的会 编译可以会过,但是在运行的时候就会出现异常。
/*
所以在写的时候就要写C语言的类型,char* 其次该函数是不安全的函数,所以在使用的时候使用```sscanf_s()```,
sprintf()函数也是一样的问题,应该使用sprintf_s()函数
*/
2.C++
- 利用stringstream 流进行处理,安全
- stringstream 中包含
+ istringstream (输入)
+ ostringstream(输出)- stringstream 流出时遇到 逗号,回车时问题
string s = "1 1.3 aaa a ";
string s1 = "abc,1,abcdef,abcdefg,aab";
stringstream ss;
ss << s;
int ia = 0;
double db = 0.0;
string sc = "";
char cd = ' ';
ss >> ia;
cout << "ia -> " << ia << endl;
ss >> db;
cout << "db -> " << db << endl;
ss >> sc;
cout << "sc -> " << sc << endl;
ss >> cd;
cout << "cd -> " << cd << endl;
ss.clear();
cout << "*****************************" << endl;
ss << s1;
//ss >> sc;
//cout << sc << endl;
while(ss >> sc) {cout << sc << endl;}
结果:

3.利用stringstream类型转换
可以把任意类型转换成字符串
template<class T>
void to_string(string & s;T &val)
{
stringstream ss << val;
s = ss.str();
}
4.C++格式化
cin >> noskipws-- > 不忽略任意地方空格- hex控制输出的格式,默认为dec(十进制),可手动设置dec,hex,oct。
setiosflags为控制格式,ios::uppercase 为输出大写十六进制格式,也可以省略setiosflags直接写uppercase.一共有7种格式
setiosflags(ios::fixed) //---> 固定的浮点显示
setiosflags(ios::scientific) //--- 指数表示
setiosflags(ios::left) //---左对齐
setiosflags(ios::right) //---右对齐
setiosflags(ios::skipws) //--- 忽略前导空白
setiosflags(ios::uppercase) //--- 16进制数大写输出
setiosflags(ios::lowercase) //---16进制数小写输出
C/C++格式化输入,输出的更多相关文章
- 《C语言程序设计现代方法》第3章 格式化输入/输出
完整的细节将留到第22章中介绍. 调用printf函数一次可以打印的值的个数没有限制. 注意:C语言编译器不会检查格式串中转换说明的数量是否和输出项的数量相互匹配,也不会检查转换说明是否适合要显示项的 ...
- 重学C语言---04字符串和格式化输入/输出
1.程序示例 //talkback.c一个能为你提供一些信息的对话框 #include <stdio.h> #include <string.h> //提供strlen函数原型 ...
- java 日期的格式化 输入/输出
想要得到形如2018.07.09的格式化好的当天日期 创建Date对象,调用SimpleDateFormat对象的format方法: indexstr="logstash-"+ne ...
- C Primer Plus学习笔记(三)- 字符串和格式化输入/输出
从一个简单的例子开始 #include <stdio.h> int main() { char name[10]; printf("Input Your Name:\n" ...
- C Primer Plus 第4章 字符串和格式化输入/输出 编程练习
1. #include <stdio.h> int main(void) { ]; ]; printf("请输入您的名字: "); scanf("%s&quo ...
- C-字符串和格式化输入\输出
1.字符串是一个或多个字符序列.字符串常量用双引号括起来“abc”,字符常量用单引号括起来‘’. 2.数组是同一类型的数据元素的有序序列.数据元素在内存中是连续存储的. C中没有为字符串定义专门的变量 ...
- 【C语言学习】《C Primer Plus》第4章 字符串和格式化输入/输出
学习总结 1.String str=”hello world!”;(Java),char[20]=” hello world!”;(C).其实Java字符串的实现,也是字符数组. 2.字符串的尾部都会 ...
- (Go)06. Printf格式化输出、Scanf格式化输入详解
Print.Println .Printf .Sprintf .Fprintf都是fmt 包中的公共方法,在需要打印信息时需要用到这些函数,那么这些函数有什么区别呢? Print: 输出到控制台(不接 ...
- Python笔记_第一篇_面向过程_第一部分_4.格式化输入和输出
开始Python编程首先要学习两类最常用(经常出现和使用)输入和输出.学习编程最重要的状态就是“人机交互”,所以这两类函数显得尤其重要. 第一部分 格式化输入 1.1 函:input 语:inpu ...
随机推荐
- 【Dairy】2016.11.5
橘子洲一游
- 今天要查一下,如果没有密保手机的号码在使用,怎么更换qq的密保手机
本来我是想是使用284来作为foxmail的一个记事本账号,但是需要验证130的手机,这是以前使用的手机,现在不能接受该短信了,得反馈下.
- BZOJ_1493_[NOI2007]项链工厂_Splay
BZOJ_1493_[NOI2007]项链工厂_Splay Description T公司是一家专门生产彩色珠子项链的公司,其生产的项链设计新颖.款式多样.价格适中,广受青年人的喜爱. 最近T公司打算 ...
- [noip模拟赛]跑跑步
https://www.zybuluo.com/ysner/note/1298652 题面 小胡同学是个热爱运动的好孩子. 每天晚上,小胡都会去操场上跑步,学校的操场可以看成一个由\(n\)个格子排成 ...
- 你想知道的关于JavaScript作用域的一切
原文: https://toddmotto.com/everything-you-wanted-to-know-about-javascript-scope/ JavaScript中有许多章节是关于s ...
- ubuntu/linuxmint如何添加和删除PPA源
[添加] 1.sudo add-apt-repository ppa:user/ppa-name 2.sudo apt-get update (然后再安装软件sudo apt-get install ...
- source命令用法(转载)
转自:http://zhidao.baidu.com/link?url=mNfsPHSjTEm7llgyMYx0UVNwkJmD_cxLeHtZnHcM6Ms8LDXofVHka_EzHi6GltbR ...
- bzoj 1925: [Sdoi2010]地精部落【dp】
设[f[i][j]为1到i,开头数字是j并且是山峰的方案数 注意到当数字j和j-1不相邻时,交换它们会得到一个新的符合要求的序列,所以f[i][j]+=f[i][j-1]; 如果相邻,那么j是山峰,j ...
- bzoj 1621: [Usaco2008 Open]Roads Around The Farm分岔路口【dfs】
模拟就行--讲道理这个时间复杂度为啥是对的??? #include<iostream> #include<cstdio> using namespace std; int k, ...
- oracle-数据库泵EXPDP导出用户下所有
1登录sys用户 2创建目录 create directory [dirname] as ‘[dirpath]’; dirname:取的名字 dirpath:dmp文件导出路径 示例:create d ...