创建一个简陋的基础版脚本解析器
1:直接用你的代码编辑工具创建一个命令行项目
这个是main里的代码
#include "pch.h"
#include <iostream>
int main()
{
std::cout << "开始脚本\n";
return 0;
}
运行之后会出现 开始脚本
2:把你生成的.exe文件目录加到path里
windows是 我的电脑->右键->属性->高级系统设置->高级->环境变量->找到path点击编辑
把你.exe的路径加到path里,(vs项目:点击运行后会在项目目录的Debug里生成一个.exe)
3:现在运行cmd 输入你的.exe名称就能运行你的.exe了
4:给.exe添加启动参数
就是把没有参数的main改成有参数的main
代码
#include "pch.h"
#include <iostream>
#include <fstream>
using namespace std;
int main(int argc, char **argv)
{
printf("开始脚本\n");
cout << "你输入了" << argc << "个参数" << endl;
cout << "脚本解析器路径" << argv[0] << endl;
for (int i = 0; i < argc; i++) {
if (i != 0) {
cout << "第" << i << "个参数是" << argv[i] << endl;
}
}
printf("脚本结束");
return 0;
}
输出
5:现在开始读取自己创建的脚本文件(就是文本文件改成自己想要的后缀名)
这里文件后缀用.qplog 文件里只有一句话
6:修改main文件读取脚本
代码
#include "pch.h"
#include <iostream>
#include <fstream>
#include <sstream>
#include <Windows.h>
using namespace std;
int main(int argc, char **argv)
{
cout << "脚本解析器路径" << argv[0] << endl;
if (argc > 1) {
cout << "脚本文件地址" << argv[1] << endl;
fstream infile(argv[1]);
if (infile.is_open()) {
stringstream ss; // 创建字符串流对象
ss << infile.rdbuf(); // 把文件流中的字符输入到字符串流中
string str = ss.str(); // 获取流中的字符串
cout << "脚本内容" << endl;
cout << str << endl;
}
else {
//文字显示颜色,不用管
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED| FOREGROUND_INTENSITY);
cerr << "没找到脚本文件" << endl;
//文字显示颜色,不用管
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE );
}
infile.close();
}
printf("脚本结束");
return 0;
}
输出
简单的脚本解析器已经完成,大佬们可以愉快的创建自己的脚本语言了
欢迎转载,转载请标明出处