C++一些函数 备用 markdown

来源:互联网 发布:数据资产管理2017 编辑:程序博客网 时间:2024/05/25 19:56

cppreference

输入输出

重定向

freopen(“input.txt”, “r”, stdin);
整行输入

string a;#include<iostream>  getline(cin, a);  

因为那个啥超时的原因,需要C语言
char a[100];

include

include

string c;
getline(cin,c);

cin输入字母和数字

int a[3],b[3];  char c;  cin>>a[0]>>c>>a[1]>>c>>a[2];  cin>>b[0]>>c>>b[1]>>c>>b[2];  

//当时输入格式 3.2.1
cout的输出格式

cout<setfill('0')<<setw(4)<<flag2;//保持四位证书且填充为0默认填充空格        cout保持小数点后几位cout<<fixed<<setprecision(2)<<cost;//<iomanip>

数组

动态分配

int *numList = (int *) malloc (n * sizeof(int)); scanf("%d", &numList[i]); int *nums = new int[n];

数组的初始值分配

int array [100]={0};//好像这种写法并不能够初始化,最保险的还是自己写初始化数组吧。

char 数组大小

#include<string.h>strlen(a);

字符串的大小

str.size();

如果是 new的话,

string *strs = new string[n];int *cc = new int[n];

字符串
find_first_not_of http://baike.baidu.com/link?url=eikMzuoUH9_OOD_Z4ov-JdcAdv2bMse_eWBLjRuL5IH9ggR-AgMng2SI7GiLHQuzQWiRmetaKECksoq-TLoX8a
字符串一些函数 http://blog.sina.com.cn/s/blog_453a02280100r8tv.html

string &append(int n,char c);        //在当前字符串结尾添加n个字符c

插入字符串

void insert(iterator it, int n, char c);//在it处插入n个字符c

C语言的字符串 需要限定大小,大小是比那个啥多一位,因为有终止符。
char 字符的一些函数,

#include <ctype.h> char c='c'if(islower(c)){ c=toupper(c);}

string 能够直接s.find(c) s是string格式,c是char格式
s.append(1,c);如果要加长string的话,要写明添加几个char
动态生成数组

cin>>n;                       i=n-1;    string *s=new string[n];

string 和char数组的转换

http://www.2cto.com/kf/201110/109447.html

环境:VS2010

代码:int len = strlen(str);//求字符串长度

解决:

std::string类有一个方法叫c_str()就是取出string对象的字符串,实现到char *的转换,调用方法:strlen(str.c_str());

总结:strlen只能用于c风格字符串,不能用于string,因为strlen是在遇到\0时结束判断的。用这个strlen(a.c_str())方法把string转换成c风格字符串即可解决

这个博客给出了字符串,字符数组的转换,

http://blog.csdn.net/xinwang24/article/details/6612686、

字符串数组转字符串

include

include

using namespace std;

int main(){
char a[10]=”aaaabbbba”;
string s(&a[0],&a[strlen(a)]);
cout<

include

include

using namespace std;

int main(){
string s=”aaaavvva”;
char a[10];
strncpy(a,s.c_str(),s.length());

for(int i=0;i<10;i++)    cout<<a[i]<<" ";cout<<endl;system("pause");

}
字符串转数字

include

using namespace std;

int main()
{
char a=’1’;
int x;
x=atoi(a);

cout<

include

vector的用法

vector 的定义

 vector<bool> existed(MAX, false);  

vector 插入

vector <int> c;c.push_back(elem)   //在尾部加入一个数据。

http://blog.csdn.net/edify/article/details/4035243
vector的遍历

http://blog.csdn.net/liunian17/article/details/7435781
vector遍历输出

void print(int n){    cout<<" "<<n;}//下面为主函数里面#include <algorithm>vector<int> vec; for_each(vec.begin(),vec.end(),print);

错误原因
(1)error C2679: 二进制“>>”: 没有找到接受“std::string”类型的右操作数的运算符(或没有可接受的转换) 未定义string

#include "stdafx.h"#include <vector>#include <iostream.h>using namespace std;int main(int argc, char* argv[]){    int a[7]={1,2,3,4,5,6,7};    vector<int> ivector(a,a+7);//vector的赋值并不可以像数组一样方便的用花括号方便的完成赋值,这里借用了数组来初始化这个vector,初始化方    //式vector<elementType> intvec(begin,end);这样可以用起来看上去还是比较习惯的。    vector<int>::iterator iter;    for (iter=ivector.begin();iter!=ivector.end();iter++)    {        cout<<*iter<<'\0';    }    cout<<endl;    ivector[5]=1;//单个vector的赋值,这个方式看上去还是和数组一样的,不过你也可以这么写ivector.at(5)=1;但是就是不习惯    cout<<ivector[5]<<endl<<ivector.size()<<endl;    for (iter=ivector.begin();iter!=ivector.end();iter++)    {        cout<<*iter<<'\0';    }    return 0;}

vector 逆序输出

c.insert(vector.begin(),elem)
还有一种 ,rbegin,rend
map的用法

map真的是好东西
http://blog.csdn.net/artemisrj/article/details/20373281
map好像插入的时候会自动排序。。。
map查找
if(map.find(a)!=map.end()){
;
}

C++ 数据取值范围

char -128 ~ +127 (1 Byte)
short -32767 ~ + 32768 (2 Bytes)
unsigned short 0 ~ 65536 (2 Bytes)
int -2147483648 ~ +2147483647 (4 Bytes)
unsigned int 0 ~ 4294967295 (4 Bytes)
long == int
long long -9223372036854775808 ~ +9223372036854775807 (8 Bytes)
double 1.7 * 10^308 (8 Bytes)
climits头文件的用法
CHAR_MIN       char的最小值
SCHAR_MAX      signed char 最大值
SCHAR_MIN       signed char 最小值
UCHAR_MAX      unsigned char 最大值
SHRT_MAX       short 最大值
SHRT_MIN       short 最小值
USHRT_MAX      unsigned short 最大值
INT_MAX       int 最大值
INT_MIN        int 最小值
UINT_MAX       unsigned int 最大值
UINT_MIN       unsigned int 最小值
LONG_MAX      long最大值
LONG_MIN       long最小值
ULONG_MAX      unsigned long 最大值
FLT_MANT_DIG    float 类型的尾数
FLT_DIG        float 类型的最少有效数字位数
FLT_MIN_10_EXP   带有全部有效数的float类型的负指数的最小值(以10为底)
FLT_MAX_10_EXP    float类型的正指数的最大值(以10为底)
FLT_MIN        保留全部精度的float类型正数最小值
FLT_MAX        float类型正数最大值
LLONG_MAX 指的是long long 的最大值
溢出的判断条件
1065. A+B and C (64bit) (20)
素数(prime)的求法
bool issushu(int m){ //判断是否是素数
int j;
bool flag=true;
for(j=2;j*j<=m;j++){
if(j==2)
;
else if(m%j==0){
flag=false;
}

}  return flag;  

}

文件输入输出

freopen("in.txt","r",stdin); //输入重定向,输入数据将从in.txt文件中读取

// freopen(“out.txt”,”w”,stdout); //输出重定向,输出数据将保存在out.txt文件中
fclose(stdin);//关闭文件
fclose(stdout);//关闭文件

有时候分明包含头文件了却说不存在,那么原因就是没有用空间的关系,加上 std::
为了方便用fstream 写的函数

string read(ifstream &T) //pass the file stream to the function
{
//the method to read a file, that I showed you before
string a;
char ch;
// a.append(” “);
while(!T.eof())
{
T.get(ch);
//cout<

include

using namespace std;

void main() //程序从这里开始运行
{
ofstream SaveFile(“cpp-home.txt”);
SaveFile << “Hello World, from www.cpp-home.com and Loobian!”;
SaveFile.close();
}
//#include
string fname=”location.txt”;

ifstream f(fname.c_str());if(!f){    cout<<"can't open the file "<<fname;}else{    cout<<"open the file "<<fname;}double d;while(!f.eof()){    f>>d;    cout<<d<<endl;}   // char str[100];//f.getline(str,100);   //getline 可以读取一行f.close();

如果输入的数字以逗号隔开,那么可以用一个字符代替输入
ifstream f(fname.c_str());
while(!f.eof()){
char aa;
f>>xValues[i];
f>>aa;
f>>yValues[i];
i++;
}
f.close();
也就是说fstream的输入输出都是可以按照普通的输入输出的规则进行的。
要想换一个文件输入输出,那么就先关闭文件,再打开文件。
p1.close();
p1.open(“C:\outPoints.csv”);
排序 sort

经典例子,用vector
http://blog.csdn.net/artemisrj/article/details/18195499

http://hi.baidu.com/posinfo/item/dc3e73584c535cc9d2e10c27
《Effective STL》里这些话可能对你也有用处:item 31      “我们总结一下你的排序选择:    ● 如果你需要在vector、string、deque或数组上进行完全排序,你可以使用sort或stable_sort。    ● 如果你有一个vector、string、deque或数组,你只需要排序前n个元素,应该用partial_sort。    ● 如果你有一个vector、string、deque或数组,你需要鉴别出第n个元素或你需要鉴别出最前的n个元素,而不用知道它们的顺序,nth_element是你应该注意和调用的。    ● 如果你需要把标准序列容器的元素或数组分隔为满足和不满足某个标准,你大概就要找partition或stable_partition。    ● 如果你的数据是在list中,你可以直接使用partition和stable_partition,你可以使用list的sort来代替sort和stable_sort。如果你需要partial_sort或nth_element提供的效果,你就必须间接完成这个任务,但正如我在上面勾画的,会有很多选择。      另外,你可以通过把数据放在标准关联容器中的方法以保持在任何时候东西都有序。你也可能会考虑标准非STL容器priority_queue,它也可以总是保持它的元素有序。”
要使用此函数只需用#include sort即可使用,语法描述为:
sort(begin,end),表示一个范围,例如:
int _tmain(int argc, _TCHAR* argv[])
{
int a[20]={2,4,1,23,5,76,0,43,24,65},i;
for(i=0;i<20;i++)
cout<

0 0
原创粉丝点击