4

「算法刷题」C++中的输入输出控制

 2 years ago
source link: https://magicdeveloperdrl.github.io/2022/04/13/%E7%AE%97%E6%B3%95%E5%88%B7%E9%A2%98-C++%E4%B8%AD%E7%9A%84%E8%BE%93%E5%85%A5%E8%BE%93%E5%87%BA%E6%8E%A7%E5%88%B6.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

「算法刷题」C++中的输入输出控制

Apr 13, 2022 • MRL Liu

[TOC]

​ 在控制台程序中,用户经常需要读写程序到控制台界面,其中数据<->内核缓冲区<->控制台窗口。为了表述方便,我们直接认为数据读写到控制台上。

一、控制台的输入

控制台的输入常见有如下几种方式:

#include<iostream>
using namespace std;
//方式一:getchar()
char c=getchar()//从控制台读取任何一个字符,可以是空格、tab、enter等
//方式二:getline()
string s;
getline(cin,s,delim='\n')//从输入流cin中读取一行数据到字符串s中,默认截断符是'\n'
//方式三:cin
int i;
cin>>i;//从输入流cin中默认读取一个数据到指定数据类型中,默认截断符是空格、tab、enter等空白字符
//方式四:scanf
scanf("%a %c %d",&a,&b,&c);
//方式五:istream.getline()
istream& getline (char* s, streamsize n );
istream& getline (char* s, streamsize n, char delim );
//作用是: 从istream中读取至多n个字符(包含结束标记符)保存在s对应的数组中。即使还没读够n个字符,
//如果遇到delim 或 字数达到限制,则读取终止,delim都不会被保存进s对应的数组中。

二、控制台的输出

控制台的输出常见有如下几种方式:

#include<iostream>
using namespace std;
//方法一:输出流 cout
cout<<数据项;// cout可以自动判断数据类型并转换为字符进行输出
//方法二:标准输出函数 printf
printf("<格式化字符串>", <参量表>);
%d 十进制有符号整数
    %3d表示输出3位整数,不够3位右对齐
    %03表述输出3位整数,不够前面补0
    %-3d表示右对齐
%x 无符号以十六进制表示的整数
%o 无符号以八进制表示的整数
%f 浮点数
    %9.2f表示输出9位浮点数,其中小数位为2
%s 字符串
    %8s表示输出8个字符串的字符串
    %6.9s表示输出长度在[6,9]之间的字符串,超过部分舍弃
%c 单个字符
%u 十进制无符号整数
%p 指针的值
%e 指数形式的浮点数
以上默认不够位数右对齐,够位数则按实际位数输出,浮点数小数部分够位数则四舍五入
\n 换行
\f 清屏并换页
\r 回车
\t Tab符

三、字符串流的输入输出

1、字符串流的操作

#include<iostream>
#include<string>
using namespace std;

int main(){
    // 创建字符串流
    stringstream sstream;
    // 对该流进行输入
    int nValue = 1000;
    sstream << nValue;
    // 对该流进行输出
    string strResult;
    sstream >> strResult;
    // 字符串和流的相互转换
    stringstream ss =sstream(s)//字符串转换为流
    string newS=ss.str();
    return 0;
}

2、用字符串流分割字符串

string s='x;b;b;b;';
string t;
stringstream ss(s);//将字符串转换为字符串流
while(getline(ss,t,';')) {
    if(t.empty()) continue;
    cout<<t<<endl;
}

「算法刷题」C++中的正则表达式

「算法刷题」牛客华为题库(一)


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK