C++输入输出常用格式(cin,cout,stringstream)

简介: 输入格式       1、cin>>a;     最基本的格式,适用于各种类型。会过滤掉不可见字符例如空格,TAB,回车等       2、cin>>noskipws>>ch[i];     使用了 noskipws流控制,不会过滤空白字符     3、cin.

输入格式

 

 

  1、cin>>a;

 

 

  • 最基本的格式,适用于各种类型。会过滤掉不可见字符例如空格,TAB,回车等

 

 

  2、cin>>noskipws>>ch[i];

 

 

  • 使用了 noskipws流控制,不会过滤空白字符

 

  3、cin.get(ch); 或 ch = cin.get();

 

  • 接收一个字符,类似于getchar();

  4、cin.getline(s,k);

  • 接收一行中k个字符,可以接收空格
  • cin.getline()实际有三个参数,cin.getline(字符串,接收个数,结束字符);
  • 当第三个参数省略时,系统默认为'\0';

  5、getline(cin,s);

  • 和cin.getline()类似,读入一行字符串,值得注意的是cin.getline()属于istream流,而getline()属于string流,二者并不相同。

输出格式

  1、cout << a;

  •  

    基本格式,适用于各种类型

  2、cout << setprecision(k) << a;

  • 设置位数,和printf中的%6d此格式类似;
  • 若是想要设置小数点后位数,则用cout << fixed << setprecision(k) << a; 控制小数点后位数

  3、cout << setfill(ch) << setw(k) << a;

  • 设置长度以及填充字符,例如cout << setfill('0') << setw(3) << 1;输出001.

 

 

  4、cout << hex << setiosflags(ios::uppercase) << a; 或 cout << hex << uppercase << a;

  • 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进制数小写输出

  5、endl

这也是cout中很重要的一个东西,不仅仅只是提供一个换行,endl还会刷新缓冲区。

cout会对输出内容进行缓冲,所以输出的内容并不会立即输出到显示器而是被存储在缓冲区中。

一下三种情况会进行输出:刷新缓冲区,缓冲区满时,关闭文件。

而endl就是刷新缓存区,强制进行输出,若是想观察不刷新缓冲区的情况可以加一行#define endl "\n",将endl用换行符代替,观察输出情况。

  • PS:值得注意的是只有setw的设置只有当次输出有用,下一个cout就会失效,而其他所有控制格式会永久生效。

StringStream

这个东西单独讲,比较重要,包含在sstream库中。

istringstream类用于执行C++风格的串流的输入操作。
ostringstream类用于执行C风格的串流的输出操作。
stringstream类同时可以支持C风格的串流的输入输出操作。

然后stringstream的作用就是从string对象读取字符或字符串。

1     string s = "ABCD";
2     stringstream ss(s);
3     char ch;
4     while(ss>>ch){
5         cout << ch << " ";
6     }
7 
8     //运行结果
9     //A B C D

又例如

1     string s = "hello world";
2     stringstream ss(s);
3     string str;
4     while(ss>>str){
5         cout << str << " ";
6     }
7 
8     //运行结果
9     //hello world

在某些题目需要处理字符串时,这些题目往往是输入的一行中包含多个字符以及空格,这个时候就可以利用 stringstream进行单个字符或者单个字符串分析处理了。


 

还是那句话,其实啥都不是很难,多敲代码,多运用就熟悉了 =7=

目录
相关文章
|
7月前
|
存储 JSON 数据库
【C++ 软件设计思路】跨平台应用开发:如何选择合适的格式保存信息
【C++ 软件设计思路】跨平台应用开发:如何选择合适的格式保存信息
174 0
|
7月前
|
数据采集 API 开发工具
Baumer工业相机堡盟工业相机如何通过BGAPI SDK实现Raw格式的图像保存(C++)
Baumer工业相机堡盟工业相机如何通过BGAPI SDK实现Raw格式的图像保存(C++)
97 0
Baumer工业相机堡盟工业相机如何通过BGAPI SDK实现Raw格式的图像保存(C++)
|
16天前
|
存储 编译器 Linux
【c++】类和对象(上)(类的定义格式、访问限定符、类域、类的实例化、对象的内存大小、this指针)
本文介绍了C++中的类和对象,包括类的概念、定义格式、访问限定符、类域、对象的创建及内存大小、以及this指针。通过示例代码详细解释了类的定义、成员函数和成员变量的作用,以及如何使用访问限定符控制成员的访问权限。此外,还讨论了对象的内存分配规则和this指针的使用场景,帮助读者深入理解面向对象编程的核心概念。
43 4
|
7月前
|
存储 监控 开发工具
Baumer工业相机堡盟工业相机如何联合NEOAPI SDK和OpenCV实现相机图像转换为AVI视频格式(C++)
Baumer工业相机堡盟工业相机如何联合NEOAPI SDK和OpenCV实现相机图像转换为AVI视频格式(C++)
76 0
|
7月前
|
存储 传感器 开发工具
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK修改图像像素格式Mono8或者Mono10(C++)
Baumer工业相机堡盟工业相机如何通过NEOAPI SDK修改图像像素格式Mono8或者Mono10(C++)
182 0
|
7月前
|
存储 安全 Linux
C++文件格式深度解析:从底层结构到关键特性
C++文件格式深度解析:从底层结构到关键特性
424 3
C++文件格式深度解析:从底层结构到关键特性
|
7月前
|
C++
【代码片段】【C++】获取当前时间戳并生成固定格式字符串
【代码片段】【C++】获取当前时间戳并生成固定格式字符串
70 0
|
7月前
|
存储 C++
C++ cin标准输入流,及获取多个输入的方法
在C++中,cin与流提取运算符>>配合使用,可以用于获取标准的输入,比如从键盘上获取输入。cin是C++标准库标准库iostream中的一个类实例。
115 1
|
7月前
|
机器学习/深度学习 C++ iOS开发
C++中的格式控制
C++中的格式控制
|
7月前
|
存储 C语言 C++
C++遍历文件夹获取各文件名称并筛选指定格式类型的文件或具有特定名称的文件
C++遍历文件夹获取各文件名称并筛选指定格式类型的文件或具有特定名称的文件
134 1