博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++知识点
阅读量:6224 次
发布时间:2019-06-21

本文共 2173 字,大约阅读时间需要 7 分钟。

一、控制台不跳出

system("pause");

需要引用:#include <string>

二、头文件

  为了与 C兼容,C++保留了 C语言中的一些规定。其中之一是头文件的形式。

C 语言中头文件用.h 作为后缀,如 stdio.h, math.h, string.h 等。

在C++发展初期,为了和 C语言兼容,许多 C++编译系统保留了头文件以.h 为后缀的用法,如 iostream.h。

但后来ANSI C++建议 头文件不带后缀.h,近年退出的C++编译系统新版本采用了C++的新方法,提供了一批不带.h的头文件,如用iostream,string等作为头文件名。

两种都可以用。

Note

由于 C语言无命名空间,因此用带后缀的.h 的头文件时不必用“using namespace std;”作声明。

三、输出控制台显示中文乱码

  试下:开始执行(不调试)  

若不行的话,首先看下CMD命令行的活动页:

究其原因,可能是 系统中的 "非unicode程序的语言"( “Language for non-Unicode programs”)
虽然设置界面显示为中文(即:code page:936),但实际上变成了英文(即:code page 437). 设置成其他的后,再恢复,就解决问题。

参考:

在控制面板中将“系统区域”改成了“英语(美国)”,将系统重启;然后再将系统区域设置改成“中文(简体,中国)”,重启,问题解决,久违的汉字终于回来了。

 更多参考:

 

 

 

二、引入OpenCV编译链接错误

  1、hello.cpp(2): fatal error C1083: Cannot open include file: 'opencv2/opencv.hppp': No such file or directory

一个是头文件的文件名拼写错误;

二是未将头文件所在路径添加到开发环境中。项目属性中设置~

 

2、链接

1>hello.obj : error LNK2019: unresolved external symbol "class  cv::Mat __cdecl cv::imread(class std::basic_string<char,struct

std::char_traits<char>,class std::allocator<char> > const &,int)"

(?imread@cv@@YA?AVMat@1@ABV?$basic_string@DU?$char_traits@D@std@@  V?$allocator@D@2@@std@@H@Z) referenced in function _main

 

“unresolved external symbol”,更具体的意思是在 main 函数中使用了 imread 函数,但是无法从外部找到 imread

opencv.hpp 头文件告诉编译器有个 imread 函数可以用,编译通过;但是到了连接时,连接器却找不到 imread的具体实现,故出错。

要解决这一问题,需要将依赖的库文件添加到项目设置中。

 

三、struct和typedef struct

分两块来讲述:

  1 首先://注意在C和C++里不同
    在C中定义一个结构体类型要用typedef:
    typedef struct Student
    {
    int a;
    }Stu;
    于是在声明变量的时候就可:Stu stu1;(如果没有typedef就必须用struct Student stu1;来声明)
    这里的Stu实际上就是struct Student的别名。Stu==struct Student
    另外这里也可以不写Student(于是也不能struct Student stu1;了,必须是Stu stu1;)
    typedef struct
    {
    int a;
    }Stu;
    

但在c++里很简单,直接

    struct Student
    {
    int a;
    };    
    于是就定义了结构体类型Student,声明变量时直接Student stu2;
======================================================================================
  2.其次:
    在c++中如果用typedef的话,又会造成区别:
    struct   Student   
    {   
    int   a;   
    }stu1;//stu1是一个变量  

 

    typedef   struct   Student2   
    {   
    int   a;   
    }stu2;//stu2是一个结构体类型=struct Student  

 

    使用时可以直接访问stu1.a
    但是stu2则必须先   stu2 s2;
    然后               s2.a=10;
  

转载于:https://www.cnblogs.com/peterYong/p/6556551.html

你可能感兴趣的文章
beego+mysql的美剧网站源码
查看>>
Android的Fragment
查看>>
javascript没有加载完就不可以响应ajax请求了么
查看>>
我的友情链接
查看>>
hashmap的初始容量为什么设置为16?
查看>>
10、二进制中1的个数
查看>>
好程序员带你认识“jQuery”
查看>>
不断重复
查看>>
jquery-event01
查看>>
9,mysql触发器
查看>>
在交换机上拒绝非法的DHCP服务器分配IP地址
查看>>
解决ezSQL编码问题
查看>>
[转]如何用Jmeter做压力测试
查看>>
跨站点如何快速部署DC
查看>>
C#修改目录和文件权限
查看>>
EL表达式
查看>>
深入浅出Hadoop Mahout数据挖掘实战(算法分析、项目实战、中文分词技术)
查看>>
UbuntuServer 12.04安装记录(二):svn服务的创建
查看>>
谈谈最近深圳找工作经历
查看>>
vSphere 5.0 存储特点—简介
查看>>