今天考试的感悟

知乎@ACCEPT

知乎@ACCEPT

知乎@ACCEPT

上面3张gif转载自知乎@ACCEPT
原网站

DEV C艹
然后调VsCode
嘤文到天朝文:30分钟
配置文件:调到现在
在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述
然后新问题又来了
在这里插入图片描述
附加我写的C艹解释器(目前只能拆分语法)
C++explainer.cpp:

#include"function"
using namespace std;
language theLanguage;

int main(int argc,char* argv[]){
	theLanguage=getLanguage();
	freopen(getFile(theLanguage).data(),"r",stdin);
	readMsg=new msg;
	cout<<"Reading Files";
	readFile();
	freopen("explain.txt","w",stdout);
	printGrammer();
}

function:

#include<bits/stdc++.h>
#include<math.h>
#include<pthread.h>
#include <windows.h>
using namespace std;
#define SPACE_CHAR ' '
#define ENTER_CHAR '\n'
#define TAB_CHAR 011
#define CLS system("cls")
#define sleep Sleep
#define inRange(l,e,r) (l)<=(e)&&(e)<=(r)
#define MaxExpressionTypeNum 10
#define NEW_LINE printf("\n")
#define pause system("pause")
int playernum;
queue <string> commandQueue;
#define getfnc __FUNCTION__
#define getfile __FILE__
#define getline __LINE__

using namespace std;

typedef string language;
typedef map<language,string> languages;
map<int,language>ACP2Language;

language getLanguage(){
	ACP2Language[1200]="English";
	ACP2Language[936]="Chinese(Simplfy)";
	return ACP2Language[GetACP()];
}

string getFile(language lang){
	languages permission;
	permission["Chinese(Simplfy)"]="请输入你的C++文件名:";
	permission["English"]="Please enter your C++ file name:";
	cout<<permission[lang]<<endl;
	string fileName;
	cin>>fileName;
	return fileName;
}

struct msg{
	string message;
	int dotNum;
	float sleepSec;
	bool printing;
};

msg *readMsg;

void* printLoadingMSG(void* Msg)
{
	msg* printMsg=(msg*)Msg;
	int dotNum=0;
	CLS;
	cout<<(*printMsg).message;
	while((*printMsg).printing){
		if(dotNum<(*printMsg).dotNum)
		{
			printf(" .");
			dotNum++;
		}
		else
		{
			CLS;
			cout<<(*printMsg).message;
			dotNum=0;
		}
		sleep((*printMsg).sleepSec*1000);
	}
}

int charExpresser(char input)
{
	switch(input){
		case SPACE_CHAR:
		case ';':
		case TAB_CHAR:
			return 0;
		case ENTER_CHAR:
			return 11;
		case '/':
			return 12;
		case '*':
			return 13;
		default:
			if(inRange('A',input,'Z')||inRange('a',input,'z')||input=='_'||input=='#')
			return 2;
			if(inRange('0',input,'9')){
			return 3;}
			return 1;
	}
}

void readFile(){
	char tester;
	bool started=true;
	bool isLastGang=false;
	bool onlyNum,lineComment;
	string str="";
	onlyNum=true;
	while(scanf("%c",&tester)!=EOF)
	{
	assert(charExpresser(tester)!=-1);
		switch(charExpresser(tester)){
			case 0:
				if(started)commandQueue.push(str);
				if(started)str="";
				isLastGang=false;
				onlyNum=true;
				break;
			case 1:
				if(started&&str!="")commandQueue.push(str);
				if(started)str="";
				if(started)str+=tester;
				if(started)commandQueue.push(str);
				if(started)str="";
				break;
			case 2:
				onlyNum=false;
			case 3:
				if(started)str=str+tester;
				isLastGang=false;
				break;
			case 11:
				if(!lineComment)
				started=true;
				isLastGang=false;
				break;
				if(started)commandQueue.push("\n");
			case 12:
				if(lineComment&&isLastGang&&(!started))
				{started=false;
				lineComment=false;
				}
				isLastGang=true;
				break;
			case 13:
				if(isLastGang&&(!lineComment)){
					lineComment=true;
					started=false;
				}
				if(lineComment){
					isLastGang=true;
				}
		}
	}
}

void printGrammer(){
	CLS;
	for(int i=commandQueue.size();i>0;i--)
	{
		cout<<commandQueue.front();
		commandQueue.push(commandQueue.front());
		commandQueue.pop();
		NEW_LINE;
	}
}

然后vs Code读入中文时变成了“�”
而它又支持编辑时输入天朝文?!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值