如何记住cin和cout之后符号的方向?
方法:将cin 视为键盘或者输入设备的名称,并将cout想象为屏幕或者输出设备的名称。
cin >> strInput 数据将从键盘向变量strInput移动,所以箭头要从cin指向变量。
cout << strInput 数据从变量strInput向屏幕移动,所以箭头指向cout。
cout << “hello” 同理。
#include <iostream>
using namespace std;//这句话的作用是:如果不用这句话,某些操作或者变量前面就必须加上std前缀。
比如std::cout或std::cin,而使用了这句,就不用加了。有点像java5的import static .而std对应于package。
不过using namespace std还有一个强大的地方在于其可以用在函数内部:
比如
double area(double radius){
using namespace std;
return (PI*pow (radius,2);
}
#include <iostream>
//using namespace std;
int main(){
std::cout<< "hello word/n";
return 0;
}
很显然,这句话是不能修改的。需要std命名空间的时候,std就是std,而不能是其他。
老版本的c++编译器要求使用iostream.h。但是新的c++标准已经不支持.h文件的include(据说)
cin<<va<<vb 输入两个变量。
几个操作符的区别::,.,->
::是作用域解析操作符,前面跟类或者命名空间。
.和->是对象操作符,前面是对象,其中->表示前面是一个对象指针。
Student s1, *ps;
s1是对象,ps是指向对象的指针.
s1.print
(*ps).print
ps->print
这三个等价
printf相关
TRACE("/n%f/n",5);
TRACE("%f/n",5.0);
TRACE("%d/n",5.0);
TRACE("%d/n",5);
TRACE("%d,%d/n",5.0,5);//由于前面的错误导致了后面的错误
输出结果:
0.000000
5.000000
0
5
0,1075052544
printf ,sprintf等都有同样的问题。
使用时一定要小心,注意类型匹配。
参考讨论:
http://zhidao.baidu.com/question/51797899.html?fr=qrl
二、VC相关
如何打印调试信息?
使用TRACE函数,格式跟printf一样。只在debug模式有效,release时无效,输出结果在“debug”窗口查看
CString为何有时在vc调试时无法查看值?rebuild all即可。
如何修改vector元素值?
直接赋值是不可以的。
使用指针,比如CvPoint3D32f * OnePoint = &vctCoord3DPoints[selIndex];
OnePoint.x = 10;
OnePoint.y = 12;
OnePoint.z = 15;
如何在debug时查看vector的元素值?vctCoord3DPoints[0]这样的方式是行不通的,会提示
CXX0058: Error: overloaded operator not found
解决办法是:在调试窗口中输入变量(vctCoord3DPoints._First)[0]
注意:vector类提定义了三个Iterator:_Last、_First和_End,但是是保护成员,外部无法访问。