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);
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;
}