windows风格目录转linux风格目录

在使用msys2的时候,需要使用linux风格目录,而从windows复制过来的目录字符串,需要一个一个去改正反斜杠,还要给带空格的加上单引号,挺麻烦,于是开发了这个工具直接转。

#include <iostream>
#include <algorithm>
#include <vector>

using namespace std;

vector<string> SplitString(const char* target, const char* delim)
{
	vector<string> v;
	int length = strlen(target);
	char* s = new char[length + 1];
	strcpy(s, target);
	char* p = strtok(s, delim);
	while (p)
	{
		v.push_back(p);
		p = strtok(NULL, delim);
	}
	delete[] s;
	return v;
}

char siweilicheng[];

int main(int argc, char* argv[])
{
	if (argc == 1)
	{
		printf("用法 \r\n\
windirtolinuxdir.exe windows风格字符串\r\n\
utf8togbk.exe --info");
		return 0;
	}

	int ret = strcmp(argv[1], "--info");
	if (ret == 0 && argc == 2)
	{
		cout << siweilicheng << endl;
		return 0;
	}

	string windir = argv[1];
	if (argc > 2)
	{
		for (int i = 2; i < argc; i++)
		{
			windir += ' ';
			windir += argv[i];
		}
	}

	vector<string> pieces = SplitString(windir.c_str(), "\\");
	for (auto& piece : pieces)
	{
		if (piece.find_first_of(' ') != string::npos)
		{
			piece = "'" + piece + "'";
		}
	}

	string linuxdir;
	for (auto& piece : pieces)
	{
		linuxdir = linuxdir + "/" + piece;
	}

	linuxdir[1] = tolower(linuxdir[1]);

	string::iterator it;     //指向string类的迭代器。你可以理解为指针
	for (it = linuxdir.begin(); it != linuxdir.end(); it++)
	{
		if (*it == ':')
		{
			linuxdir.erase(it);          //删除it处的一个字符
			break;
		}
	}

	cout << linuxdir << endl;

	return 0;
}

char siweilicheng[] =
{
"将windows风格的目录替换为linux风格的目录,如果字符串太长,一个一个地将`\\`改为`/`太麻烦了。\r\n\
所以准备写这个程序用来自动转换目录风格。\r\n\
现在需求只有一个,就是转目录,其它不考虑。\r\n\
主要要做4件事。一是将`\\`转为`/`。二是为有空格的字符串加上单引号`'`包起来。三是将盘符`C:`修改为`/c`。\r\n\
用户输入1个参数就行,windows风格目录的字符串,程序处理后输出linux风格目录的字符串。\r\n\
测试时觉得还不够好用,需要用户添加一个双引号表示一个参数。需要改为拿到目录直接扔给程序,让他给出正确结果。\r\n\
实现起来还是比较容易的,一个判断一个循环加5行代码搞定。\r\n\
开发软件的过程就是一个积累的过程,一行一行的去积累。这样到了后面就可以非常容易的去使用之前的经验,之前写好的代码。"
};

编译的时候,取消sdl检查就行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值