C/C++输入输出

来源:互联网 发布:网络辱骂警察 编辑:程序博客网 时间:2024/05/02 01:31

C向控制台窗口的输入输出

使用头文件#include <stdio.h>,使用scanf(),printf()函数输入输出;对于字符getchar(),putchar(),对于字符串还可使用gets(),puts()函数
1. scanf()和gets()区别
  scanf(“格式控制字符串”,变量地址列表);接受字符串时:scanf(“%s”,字符数组名或指针);
  gets(字符数组名或指针);
  scanf不能接受空格、制表符Tab、回车等;而gets能够接受空格、制表符Tab和回车(Enter、Space、Tab) 等;scanf :当遇到(Enter、Space、Tab) 会自动在字符串后面添加’\0’,但是(Enter、Space、Tab) 仍会留在输入的缓冲区中;gets:可接受回车键之前输入的所有字符,并用’\0’替代 ‘\n’,回车键不会留在输入缓冲区中  

C++向控制台窗口的输入输出

  使用头文件#include<iostream>,使用语句cin和cout控制输入和输出,其中有函数cin,cin.get(),cin.getline()等函数
1. cin>>
  cin>>操作符是根据后面变量的类型读取数据
  输入结束条件:遇到Enter、Space、Tab键
同scanf函数,结束符(Enter、Space、Tab) 仍在缓存中
2. cin.get()函数
  cin.get()该函数有三种格式:无参,一参数,二参数即cin.get(),cin.get(char ch), cin.get(array_name, Arsize)
  输入结束条件:Enter键
  对结束符处理:不丢弃缓冲区中的Enter,其中ch=cin.get() 与 cin.get(ch)是等价的,输入一个字符
3. cin.getline()函数
  cin.getline()与 cin.get(array_name,Arsize)的读取方式差不多,可以接受空格字符
  输入结束条件:Enter键,并在缓存中丢弃
  对结束符处理:按照长度(Arsize)读取字符, 会丢弃最后的Enter字符。但是这两个函数是有区别的:cin.get(array_name, Arsize)当输入的字符串超长时,不会引起cin函数的错误,后面的cin操作会继续执行,只是直接从缓冲区中取数据。但是cin.getline()当输入超长时,会引起cin函数的错误,后面的cin操作将不再执行

#include <iostream>using namespace std;int main(){    cout << "this is a test!" << endl;    int e, f;    cout << "请输入e,f" << endl;    cin >> e >> f ;    cout << "e=" << e << "   " << "f=" << f << endl;    cout << "#####" << endl;    char ch[10];//string s;    cin.getline(ch, 5);//getline(cin,s)    cout << "请输入ch" << endl;    cout << "ch="<<ch << endl;    cout << "请输入x" << endl;    char x=cin.get();    cout << "x="<<x<<endl;    cin.get();    cin.get();    return 0;}

这里写图片描述 这里写图片描述
左侧输入依次为1 空格 2空格 3回车4回车,右侧为1 空格 2回车4回车,显然cin<<最后一个回车没有被丢弃,值得注意

C++string流读取写入

  由于cin不能辨别回车和空格符,因此只能用getline的方式逐行读入数据到string实体中,现对string流进行介绍。
  string流:sstream头文件定义了三个类型来支持内存IO,这些类型可以向string写入数据,从string读取数据,就像string是一个IO流一样。istringstream从string读取数据,ostringstream向string写入数据,而头文件stringstream既可从string读数据也可向string写数据,sstream头文件定中声明的标准类就利用了这一点,自动选择所必需的转换,而且,转换结果保存在stringstream对象的内部缓冲中。你不必担心缓冲区溢出,因为这些对象会根据需要自动分配存储空间
  istringstream对象用来把一个已定字符串中的以空格、Tab隔开的内容提取出来,功能类似于C语言中的sscanf函数)只支持>>操作符,stringstream支持<<、>>操作符,str():使istringstream对象返回一个string字符串:

#include<iostream>  #include<sstream>        //istringstream 必须包含这个头文件#include<string>  using namespace std;  int main()  {      string str="i an a boy";      istringstream is(str);      string s;      while(is>>s)      {          cout<<s<<endl;      }    istringstream istr("1 56.7");      istr.str("1 56.7");//把字符串"1 56.7"存入字符串流中  } 
输出是:iamaboy

C++对文件的的读取写入

使用如下进行文件读写操作

#include <fstream>  ofstream         //文件写操作,无文件将创建 内存写入存储设备   ifstream         //已有文件读操作,无文件报错,存储设备读区到内存中  fstream          //读写操作,对打开的文件可进行读写操作  
ofstream file("fl.txt",iso::in|ios::out);//打开函数ostream file;//等价file.open("file.ext",iso::in|ios::out)file.close()//关闭函数  
0 0