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 ...
随机推荐
- Bridge Page
http://www.zzbaike.com/wiki/%E6%A1%A5%E9%A1%B5 桥页(Bridge Page),又叫“门页”(Doorway/Portal/Jump/Entry Page ...
- HDU2072单词数
#include<iostream> #include<set> #include<sstream> using namespace std; int main() ...
- Tensorflow学习笔记——张量、图、常量、变量(一)
1 张量和图 TensorFlow是一种采用数据流图(data flow graphs),用于数值计算的开源软件库.其中 Tensor 代表传递的数据为张量(多维数组),Flow 代表使用计算图进行运 ...
- ANT-普通替换和正则替换
ant提供了两个指令用于编译时修改文件,好处就不说了 ,就说说如何使用吧. replaceregexp 和 replace的区别就和java中String replace和replaceAll一样 , ...
- gitlab邮箱验证 邮箱提醒设置
Gitlab邮件提醒方便跟踪项目进度,在这里介绍两种方式,一种是用系统的sendmail发送邮件,另一种是GMAIL的stmp来发送邮件 第一种 用系统的sendmail发送邮件 cd /ho ...
- Android 属性系统 Property service 设定分析 (转载)
转自:http://blog.csdn.net/andyhuabing/article/details/7381879 Android 属性系统 Property service 设定分析 在Wind ...
- codeforces 949C - Data Center Maintenance【tarjan】
首先转换图论模型,把某个客户一个终端的维修时间(+1)%h之后和另一个终端维修时间一样,这样的两个终端连一条有向边,表示推后一个终端就必须推后另一个 然后tarjan缩点,一个scc里的终端是要一起推 ...
- bzoj 2165: 大楼【Floyd+矩阵乘法+倍增+贪心】
1<<i的结果需要是long long的话i是long long是没用的--要写成1ll<<i--我别是个傻子吧 虽然写的是二进制贪心,但是我觉得二分可能更好写吧(但是会慢) ...
- bzoj1015星球大战(并查集+离线)
1015: [JSOI2008]星球大战starwar Time Limit: 3 Sec Memory Limit: 162 MBSubmit: 5572 Solved: 2563 Descri ...
- (数论)51NOD 1073 约瑟夫环
N个人坐成一个圆环(编号为1 - N),从第1个人开始报数,数到K的人出列,后面的人重新从1开始报数.问最后剩下的人的编号.例如:N = 3,K = 2.2号先出列,然后是1号,最后剩下的是3号.In ...