C++文件读取,格式输出 与STL相关

去重操作:

sort(vec.begin(),vec.end());

vec.erase(unique(vec.begin(), vec.end()), vec.end());

 

nth_element ( a , a + k, a + n)     需要#include<algorithm>

长度为n的数组,将第k小的数放在第k位[下标从0开始],并将比它小的放在它前面,比它大的放在它的后面

 

string.find()函数的用法

p = s.find(s1)  返回s1在s中出现的第一个位置的下标,若不存在,返回 -1

p = s.find(s1, x) 从下标x开始查找s1,返回出现的第一个位置的下标,若不存在,返回-1

 

全排列next_permutation      #include<algorithm>

while(next_permutation(str.begin(),str.end())    cout<<str<<endl;    //输出全排列

 

字符串相关 

#include<sstream>  //用作各个类型之间的转换

一次性用法:

string s1 = "-234", s2 = "1";     int a,b;

stringstream ss(s1);

ss >> a;

cout << a << endl;    //此时a为-234

多次使用:

stringstream ss;

ss << s1;    //把s1传入到ss中

ss >> a;      //转换成int型

cout << a << endl;

ss.clear();   //多次使用清空

ss << s2;

ss >> b;

cout << b << endl;

 

string s;

s.substr(start, length);  //返回的是从下标start开始,长度为length的字符串,若length超过边界,或者为负数,则返回从start开始直到末尾;

 

#include<fstream>可以进行读写操作的头文件

一般类型的文件

ifstream fin("FileName")可以只读取文件内容

int a;

while(fin>>a)就可以不断读取数字,碰到空白符(换行、空格)则停止

ofstream in("FileName")可以写文件内容,存在则覆盖,否则新建

in<<a<<"\n" 表示写入一个数字并换行

二进制文件的读写

ifstream fin("FileName",ios::binary)只打开二进制文件,ofstream则新建或覆盖

读取必须用fin.read((char *)(&a),sizeof(a))表示从文件中读取一个整型数a出来,a处类型可以任意。

fin.write((char *)(&a),sizeof(a))则是将整形数a写进二进制文件中,a处类型同上。

每次操作完,记得关闭文件。

 

格式控制

#include<iomanip>必要的头文件

int a;

cout << right << setw(10) << setfill('C') << a;

表示右对齐,占10格,左边不足的用C填充

double b;

cout << left << setiosflags(ios::fixed) << setw(8) << setprecision(4) << showpoint << b;

表示左对齐,显示小数点后4位,占8格,setiosflags(ios::fixed)的用法是,保证4位小数,不足补0

posted @ 2017-03-20 22:39  bαcklight  阅读(2288)  评论(0编辑  收藏  举报