前言
C++学习笔记
总结
1、初始代码
#include<iostream>
using namespace std;
int main() {
cout << "Hello world" << endl;
system("pause");
return 0;
}
2、全局变量与全局函数
3、对文件进行操作
(1)读取文件:
ifstream ifs;
string filepath = "E:\\FPRG1.LS";
ifs.open(filepath, ios::in);
获取文件里每一行的内容:
getline(ifs, buff)//获取文件中某一行的内容,以字符串的形式存入到buff中
while (getline(ifs, buff))//不断获取文件中每一行的内容
{
}
例:实现读取文件中保存的坐标值数据
#include "stdafx.h"
#include<iostream>
using namespace std;
#include <fstream>
#include <string>
#include <iomanip>
//去除空格函数
void trim(string &s)
{
int index = 0;
if (!s.empty())
{
while ((index = s.find(' ', index)) != string::npos)
{
s.erase(index, 1);
}
}
}
int main() {
ifstream ifs;
string filepath = "E:\\FPRG1.LS";
ifs.open(filepath, ios::in); //打开文件
if (!ifs.is_open())
{
cout << "文件打开失败" << endl;
}
string buff;
string X = "X=";
string Y = "Y=";
string Z = "Z=";
string::size_type idx1;
string::size_type idx2;
string::size_type idx3;
double points[200]; //依次存放所有点坐标 如果是12个点,那么就总共36个数据(X、Y、Z)保留小数点后三位
int i = 0;
while (getline(ifs, buff))
{
trim(buff);//去除所有空格
idx1 = buff.find(X); //在buff中查找"X=",如果有,返回在字符串中第几位,如果没有,返回string::npos
idx2 = buff.find(Y);
idx3 = buff.find(Z);
if ((idx1 != string::npos)&&(idx2 != string::npos)&&(idx3 != string::npos))//存在
{
//cout << buff << endl;
string buff1 = buff.substr(idx1+2, idx1 + 6); //截取字符串中指定位置的字符串
points[i] = atof(buff1.c_str()); i++; //string转化为double型
string buff2 = buff.substr(idx2+ 2, idx2 + 6);
points[i] = atof(buff2.c_str()); i++;
string buff3 = buff.substr(idx3+ 2, idx3 + 6);
points[i] = atof(buff3.c_str()); i++;
}
}
for(i=0;i<36;i++)
{
cout << fixed << setprecision(3) <<points[i] << endl;
}//输出点的坐标,小数点后三位,使用这个必须包含头文件 #include <iomanip>
system("pause");
return 0;
}
4、string
包含各种类型转换:
string <—> int double float…
官方文档: link.
示例: link.
5、类的分文件编写
头文件写声明(变量和函数,即属性和行为)
源文件写函数(行为)实现,函数前加作用域(类名::)
注:源文件写函数实现时,函数前要加作用域。
//.h文件
#pragma once
#include "iostream"
using namespace std;
//点类
class point
{
public:
void setX(int m_x);
void setY(int m_y);
int getX();
int getY();
private:
int x;
int y;
};
//.cpp文件
#include"class.h"
void point::setX(int m_x) //函数前加作用域
{
x = m_x;
}
void point::setY(int m_y)
{
y = m_y;
}
int point::getX()
{
return x;
}
int point::getY()
{
return y;
}