美文网首页
(Boolan)c++课程笔记(1)

(Boolan)c++课程笔记(1)

作者: 锐芒OwO | 来源:发表于2017-07-20 19:30 被阅读0次

·c++程序代码的基本形式:
c++文用include使用头文件。
用<>包括标准库。
用””包括自定义头文件。
·Guard(防卫式声明):

#ifndef _COMPLEX_
#define _COMPLEX_
.
.
#endif

只有未被定义的COMPLEX(自己取的名称)才会被定义
当第二次被定义时会跳过。

·类:
1带指针
2不带指针。多半不用析构函数。
·singleton:单键,单例。
·同一个class各个对象互为友元。
·左值L-value中的L指的是Location,表示可寻址。
右值R-value中的R指的是Read,表示可读。

写作业的一些问题:
1.error: expected constructor, destructor, or type conversion before '(' token|
srand((unsigned)time(NULL));应该写在main内或函数中。
2.Date *date=CreatePoints(d);
date指向一个大小为10的数组,因为数组名本身就是一个常量地址,所以后面date[i].print();可以不用再date前加 *。


</br>
<br />


前几天写课程设计的一些问题和报错:
·在重载运算函数中无法直接初始化引用的类,只能另写get函数赋值。
·运用fstream刚开始分不清程序和txt之间的读入读出,出了很多错误。
·读取txt文档信息时,本想用seekg()函数,但是无法按行跳过,只能用getline逐行读取。
·修改用了一个比较笨的方法,读取文件,存入vector<string>,关闭文件,修改vector,用ios::out清空文件,存入vector。
·warning C4786: (只在vc6.0中报错)
解决方法有两种,一种是直接定义别名:

#ifdef _DEBUG
#define VeryLongClassNameA A
#define VeryLongClassNameB B
#endif

另一种是屏蔽4786warning:

#pragma warning(disable : 4786)

·使用vc6.0时,文件不能正确读取,而在vs2015和codeblocks中正常,怀疑是vc6.0中ofstream和其他编译器不同,后发现ifstream后标记符为ios::app,改正后正常。
·change函数不能输出到文件,调错了很长时间才发现是最后的save函数覆盖掉了。
权衡了一下,把save函数删掉了。
·Find函数中,如果把if条件换成string1==string2,就会报错,关于堆栈方面的。后来想到了比较函数string1.compare(string2),问题解决。但不知道为什么会出现这种错误。
·读取文件夹下文件列表。照着下面的学习了一下,但我删掉了判断文件夹的部分,加入了创建文件夹部分。

void getAllFiles(string path, vector<string>& files) {
    //文件句柄
    long hFile = 0;
    //文件信息
    struct _finddata_t fileinfo;  //很少用的文件信息读取结构
    string p;  //string类很有意思的一个赋值函数:assign(),有很多重载版本
    if ((hFile = _findfirst(p.assign(path).append("\\*").c_str(),&fileinfo)) != -1) {
        do {
            if ((fileinfo.attrib & _A_SUBDIR)) {  //比较文件类型是否是文件夹
                if (strcmp(fileinfo.name,".") != 0 && strcmp(fileinfo.name,"..") != 0) {
                    files.push_back(p.assign(path).append("\\").append(fileinfo.name));
                    getFilesall(p.assign(path).append("\\").append(fileinfo.name), files);
                }
            } else {
                files.push_back(p.assign(path).append("\\").append(fileinfo.name));
            }
        } while (_findnext(hFile, &fileinfo) == 0);  //寻找下一个,成功返回0,否则-1
        _findclose(hFile);
    }
}

部分报错:
1.vector<string> read(peccancy &l);报错
2.error: ambiguating new declaration of 'std::vector<std::basic_string<char> > read(peccancy&)'|
二义性,read前加&引用。
3.for(vector<string>::iterator iter=str.begin(); iter!=str.end(); iter++)原来缺少”!”报错。
4.rename(oldadd.c_str(),newadd.c_str());原型rename(char ,char ),不能直接传string
应该使用.c_str()函数转化为const char

5.cin.getline() 原型为cin.getline(const char
,streamsize n ) 无法传入string形参,
换用string::getline()。
error: no matching function for call to 'std::basic_ifstream<char>::getline(std::string&, int)'|
6.个别if判断字符用了””,报错。
error: ISO C++ forbids comparison between pointer and integer [-fpermissive]|
7头文件在include时重复定义(multiple definition of)
为了方便循环使用吧int i,j;放在头文件里,出现问题。
解决:删除,在函数中重新定义。

相关文章

  • (Boolan)c++课程笔记(1)

    ·c++程序代码的基本形式:c++文用include使用头文件。用<>包括标准库。用””包括自定义头文件。·Gua...

  • Boolan c++笔记_1

    1. class有两种 不含有指针 含有指针 2. 基于对象 与 面向对象 3. c++语言 与 c++标准库 4...

  • C++ STL与泛型编程-第一篇 (Boolan)

    C++ STL与泛型编程-第一篇 (Boolan) 本章内容:1 C++ Standard Library vs....

  • C++笔记第一周(Boolan)

    C++笔记第一周(Boolan) 头文件的防卫式声明: 函数在class body里定义完成则默认inline 函...

  • C++笔记1--(Boolan)

    构造函数初始值列表 1、如果没有在构造函数的初始值列表中显示地初始化成员,则该成员将在将在构造函数体之前执行默...

  • C++类型转换总结 (Boolan)

    C++类型转换总结 (Boolan) 本章内容:1 前言2 static_cast3 dynamic_cast4 ...

  • Boolan/C++面向对象高级编程 part2

    C++面向对象高级编程 part2 @(boolan C++)[C++]2017-10-22 14:17:56...

  • 2017-12-26

    C++面向对象程序设计 课程笔记(一) 一、C++编程简介 1.课程目标 以良好的方...

  • boolan/C++面向对象高级编程 part3

    C++面向对象高级编程 part3 @(boolan C++)[C++] 概述 面向对象的三种关系 composi...

  • 2017-12-25

    Boolan第一周 c++学习内容:1、语言 ;2、标准库 内联函数(inline):1、在class内直接定义;...

网友评论

      本文标题:(Boolan)c++课程笔记(1)

      本文链接:https://www.haomeiwen.com/subject/pumdkxtx.html