C++常用函数总结

C++常用函数总结

1、结构体struct构建

typedef struct pointLlinetype
{
	Point2f point_begin;
	Point2f point_end;
	string line_type;
}PointLineType;

2、find、substr函数—读取csv/txt文档内容,并做字符串拆分等处理

https://www.jianshu.com/p/5876a9f49413 —字符串拆分的几种常用方法

string line = "253	L11	9001	9001	LINESTRING(116.2091339 40.1863420 48.581,116.2091298 40.1863267 48.551)"
int str_begin = line.find('(');
int str_end = line.find(')');
int str_len = line.size();
string line_cut = line.substr(str_begin + 1, str_end - str_begin - 1); //将每一行()内的坐标点取出,为字符串格式
cout << line_cut <<endl;
输出: 116.2091339 40.1863420 48.581,116.2091298 40.1863267 48.551

find/find_first_of/find_last_of详解

   str1.find(str2);                    //  从串str1中查找时str2,返回str2中首个字符在str1中的地址
   str1.find(str2,5);                //   从str1的第5个字符开始查找str2
   str1.find("usage");            //   如果usage在str1中查找到,返回u在str1中的位置
   str1.find("o");                     //   查找字符o并返回地址
   str1.find("of big",2,2);      //   从str1中的第二个字符开始查找of big的前两个字符
   str.find_first_of(str1,pos)
   //说明:从pos位置开始查找str1,从前往后,只要查到str1中的任何一个字符有则返回其在str中的索引值
   str.find_last_of(str1,pos)
   说明:从pos位置开始查找,从后往前,查到str1中的任何一个字符则返回其str中的索引值

substr详解:

string s("12345asdf");
string a = s.substr(0,5);     //获得字符串s中从第0位开始的长度为5的字符串
cout << a << endl;
>>> 12345
1. 形式:s.substr(pos, n)
2. 解释:返回一个string,包含s中从pos开始的n个字符的拷贝(pos的默认值是0,n的默认值是s.size() - pos,即不加参数会默认拷贝整个s)
3. 补充:若pos的值超过了string的大小,则substr函数会抛出一个out_of_range异常;若pos+n的值超过了string的大小,则substr会调整n的值,只拷贝到string的末尾

3、stringstream函数—分割字符串

string line = "116.2091339,40.1863420,48.581,116.2091298,40.1863267,48.551";
stringstream line_stream(line); //转为数据流
string temp;
while (getline(line_stream, temp, ',')) //读取每行,按“,”分割,并保存到temp
{
		
}

4、查找路径path/file/csv是否存在,不存在。。。

1、查看文件是否存在,若存在则报错
filepath = "/.../.../x.csv";
ifstream file;
file.open(filePath.c_str());
if (!file){
	cerr << "打开.csv文件失败";
}
	
2、判断图片是否存在,若不存在,则创建图片
void create_img(string img_save_path, int resolution)
{
	fstream _file;
	_file.open(img_save_path, ios::in);
	if (!_file)
	{
		Mat img(resolution, resolution, CV_8UC3, Scalar(255, 255, 255));
		cv::imwrite(img_save_path, img);
	}
}

3、查看文件夹是否存在,若不存在则创建
#include <io.h>
#include <direct.h>

img_path = "xxx/yyy/..."
if (_access(img_path.c_str(), 0) == -1)	//如果文件夹不存在
		_mkdir(img_path.c_str());				//则创建

4、查看csv是否存在,不存在则新建,并写入东西

string csv_path = "C:/Users/xujun/Desktop/C++/Findcontours/point2.csv";
//打开or新建csv
ofstream file;
file.open(csv_path, ios::out);
file << "write1" << "_" << "..." << " ";
file.close();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值