c++

来源:互联网 发布:java视频网站开发 编辑:程序博客网 时间:2024/06/13 03:32

1、std::cin和cin的区别,好像是没有什么区别,只是std::cin是标准输入流,当你使用std::时,则表明你在告诉编译器你正在调用标准命名空间(namespace standard),其次为了避免每次都使用std::,所以用到命名空间using namespace std; 

下面是输出Helo World!的两个程序。

#include<iostream>int main(){   //std::cout<<"Hello World!"<<std::endl;    using std::cout;    using std::endl;    cout<<"Hello World!"<<endl;    return 0;}

使用命名空间:建议使用下面这种,简单些,呵呵呵~~其实大多数都是用这种方式~

#include<iostream>using namespace std;int main(){   cout<<"Hello World!"<<endl;    return 0;}

2、求某个数值的类型,如int的数值能表示的最大值或最小值(-2147483648~2147483647)。

#include<iostream>#include<limits>using namespace std;int Max,Min;template<typename T>void Range(){   Max=numeric_limits<T>::max();    Min=numeric_limits<T>::min();}int main(){   Range<int>();    cout<<Min<<" "<<Max<<endl;    return 0;}

3、分割字符串,这个在ACM中用的比较的多,下面的做法主要采取vector存储,利用string中的find,substr函数进行查找和分割:

#include<iostream>#include<string>#include<iterator>#include<vector>#include<functional>using namespace std;void splits(const string& s,char c,vector<string>& v){   string::size_type start=0,pos=s.find(c);    while(pos!=string::npos)    {   v.push_back(s.substr(start,pos-start));        start=++pos;        pos=s.find(c,pos);        if(pos==string::npos)            v.push_back(s.substr(start,s.length()));    }}int main(){   vector<string> v;    string s;     ostream_iterator<string> output(cout,"\n");    cin>>s;    splits(s,',',v);    copy(v.begin(),v.end(),output);    return 0;}

4、利用time函数获取当前的日期和时间:

#include<iostream>#include<ctime>//返回的是一个time_t类型的值,它表示一个实现定义的算法类型,用来代表一个时间段,或叫时间间隔 #include<cstdlib> using namespace std;int main(){   time_t now=time(0);//读取时间,秒数     cout<<asctime(localtime(&now))<<endl;//转换为本地时间,并以字符串输出     cout<<asctime(gmtime(&now))<<endl;//转换为UCT时间,即GMT,并以字符串输出     return 0;}

5 、const的使用及作用:

可以用const来声明不能修改的变量,也可以将const用于类中的成员函数,但是请注意:将类方法声明为const,必须保证该方法不会修改任何类成员的值

将类方法声明为const,如:void Point() const;它不接受任何参数,由于被声明为const的,所以不会修改其所属类的任何数据成员。

再比方说:void Point(int x);这个是不允许const的,它会修改成员变量x的值。

好的编程习惯是尽可能的将方法声明为const的,这样能让编译器捕获错误,而不至于等到程序运行时才出现Bug。

其它应用:

1、const要求它所修饰的必须为常量,且不能被赋值和修改。

例:const int MAX=1010;这个在使用数组时经常用到,但是如果你在使用这个语句后重新再给MAX赋值,就会出现错误。且不能写成这样const int MAX; MAX=1010;

2、const修饰函数形式参数:当输入参数为用户自定义类型和抽象数据类型时,将“值传递”改为“const& 传递”可以提高效率

比方说:

void Fun(Point P);void Fun(const Point &P);  
第一个函数效率低。函数体内产生A类型的临时对象用于“值传递”参数a,临时对象的构造、复制、析构过程都将消耗时间。而第二个函数提高了效率。用“引用传递”不需要产生临时对象,省了临时对象的构造,复制、析构过程消耗的时间。但只用引用有可能改变a,所以加 const;

3、使用const 修饰返回值,说明该函数的返回值不可变。

const int Fun();

4、const对指针不说,自己查资料。

其它的用法都差不多,上面几个应该足够了~,比方说下面这个是不行的:由第一点就知道。

void Fun(const int& num){   num=10;}

6、operator用法:

主要是用于类型转换和操作运算符重载

运算符重载的格式:不做解释~

函数类型 operator 运算符名称(形参列表){   对运算符的重载处理}

重载下标运算符,作用是为防止在对数组动态赋值时发生数组越界,格式为:返回类型& operator[] (下标类型 下标)。这个函数只能有一个参数。

#include<iostream>#include<string>using namespace std;class Name{public:    Name(){name="";}    Name(string s):name(s){}     char operator[](int i)      {   if(i>=0&&i<name.length()) return name[i];        else cout<<"越界啦"<<endl;    }private:       string name;            };int main(){   int a,b;    Name N("xuzengqiang");     for(int i=0;i<20;i++)        cout<<N[i]<<endl;    return 0;}


 


 




 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

原创粉丝点击