//*************************//比较C++的string类型与C-串的输入输出//**************************#include<iostream>#include<sstream>#include<fstream>using namespace std;//**********************//通过从文件或键盘读入字符序列比较C++的string与C-串的输入输出void main(){//1.1通过循环读入单词(或字符串,以一个或多个空格隔开)后,每个单词后加上一个空格输出,//若从键盘输入则没法终止循环,只有手动退出程序。
/* for(string s; cin>>s; ) cout<<s<<" "; cout<<endl;*/
//如直接运行后输入: //Hello,空格fuck?空格空格空格空格you空格空格空格?//将得到Hello,空格fuck?空格you空格?//同时还可以继续输入。。。
//1.2若字符序列从文件流中输入则直到所有字符被全部输入,即没有数据接续,留状态变成false,循环终止。
/* ifstream in("abc.txt"); for(string s; in>>s; ) cout<<s<<" "; cout<<endl; int a; cin>>a;//让程序暂时不退出,便于观察结果*///例如文本abc.txt中保存:/* a空格空格b空格c;空格回车空格a空格空格空格b空格空格c;%将得到结果:a空格b空格c;空格a空格b空格c;%*/
//1.3使用字符数组,结果同上,/* for(char a[1000]; cin>>a;) cout<<a<<" "; cout<<endl;*///文件输入结果同上 /* ifstream in("abc.txt"); for(char a[1000]; in>>a;) cout<<a<<" "; cout<<endl; int a; cin>>a;*/
//2.1通过getlin将字符序列一次性输入,若键盘输入一串字符序列后回车,可以得到相同序列。 /* string s; getline(cin,s); cout<<s<<endl; system("pause");*///2.2文件流输入则只能输入第一行,因为getline遇到回车后将终止/* ifstream in("abc.txt"); string s; getline(in,s); cout<<s<<endl; system("pause");*//*得到结果:a空格空格b空格c;空格*/
//2.3照下面代码可一直从键盘输入,程序不终止/* string s; for ( ; getline(cin,s); ) cout<<s<<endl;*/
//2.4 加上循环后文件流输入能全部原样输出 /* ifstream in("abc.txt"); string s; for ( ; getline(in,s); ) cout<<s<<endl; system("pause");*///2.5 这是使用字符数组用getline一次性输入的方法/* char a[1000]; cin.getline(a, 1000); cout<<a<<endl; system("pause");*///2.6 文件流输入 ,结果同样只能得到第一排/* ifstream in("abc.txt"); char a[1000]; in.getline(a, 1000); cout<<a<<endl; system("pause");*///2.7 加个循环实现全部输入/* ifstream in("abc.txt"); char a[1000]; for( ; in.getline(a, 1000); ) cout<<a<<endl; system("pause");*/
//3.1 逐个字符输入的方法,虽然结果同2.1,2.5,但实现过程是不一样的/* for(char ch; (ch=cin.get())!='/n';) cout<<char(ch); cout<<endl; system("pause");*///3.2 文件流也能实现逐个字符全部输出,但需要在文件末尾加上一个特定字符已作终止标记/* ifstream in("abc.txt"); for(char ch; (ch=in.get())!='%'; )//abc.txt中末尾添加%以便用来终止循环 cout<<char(ch); cout<<endl; system("pause");*///************************************************************}
