C++实现Qt中QString().arg().arg()...的用法

以前,用Qt,现在用VS2015,在输出提示信息的时候,不是cout,就是printf,那个都没有用qt的时候QString().arg()…来的方便,又懒得百度c++有没有相似的用法,就自己写一个凑合着用吧!


#pragma once
#ifndef ERRORMSG_H
#define ERRORMSG_H
#include <iostream>
#include <string>
#include <map>
#include <list>
#include <vector>
#include <queue>
#include <iterator>
using namespace std;
class MString 
{
public:
	MString() = default;
	MString(const char*);
	MString Marg(const int);
	MString Marg(const char *);
	MString Marg(const char);
	void Work(const string &str);
	string c_string();
	int all;
	
	int times;
	vector<string> s_list;
private:
	string  out;
};
void Error(MString);
void Error(string, int);
#endif // !ERRORMSG_H

.c

#include "stdafx.h"
#include "ErrorMsg.h"
void Error(MString str)
{
	cout << ">>>>Error: " << str.c_string() << endl;
}
void Error(string str, int num)
{
	cout << ">>>>Error: " << str << "[" << "]" << endl;
}

MString::MString(const char* chArr)
{
	string str = chArr;
	string buf = "";
	
	times = 0;
	all = 0;
	for (int i = 0; i < str.size(); ++i)
	{
		if (str[i] == '%')
		{
			times = atoi(&str[i + 1]);
			i++;
			if (buf.empty())
			{
				s_list.push_back(string());
			}
			else
			{
				s_list.push_back(buf);
				buf.clear();

			}
			continue;
		}
		buf.push_back(str[i]);
		if (i == str.size() - 1)
		{
			s_list.push_back(buf);
			buf.clear();
		}
	
	}
}
void  MString::Work(const string &str)
{
	all++;
	out += s_list[all - 1] + str;

	if (all == times)
	{
		if (all<s_list.size())
		{
			out += s_list.back();
			s_list.clear();
		}
	}
}
string MString::c_string()
{
	return out;
}
MString MString::Marg(const int num)
{
	string str = to_string(num);
	Work(str);
	return *this;
}
MString MString::Marg(const char * chPtr)
{
	string str = chPtr;
	Work(str);
	return *this;
}
MString MString::Marg(const char ch)
{
	string str ;
	str.push_back(ch);
	Work(str);
	return *this;
}

创建一个表格

取经团队:

参与者类型
大唐妖僧人类
齐天大圣石猴
天蓬元帅野猪
卷帘大将人类
龙太子爬虫

任务目标

最终任务
取得真经
子任务
金蝉遭贬
出胎几杀
满月抛江
寻亲报冤
出城逢虎
落坑折从
双叉岭上
两界山头
陡涧换马第九难,(遇小白龙)
夜被火烧第十难,
失却袈裟十一难,(黑风山熊罴怪,还有狼精蛇精属于小boss)
收降八戒十二难,(遇上猪八戒)
黄风怪阻十三难,(黄风怪)
请求灵吉十四难,
流沙难渡十五难,(遇沙僧)
收得沙僧十六难,
四圣显化十七难,
五庄观中十八难,
难活人参十九难,(镇元子是仙不算妖怪)
贬退心猿二十难,(白骨精)
黑松林失散二十一难,
宝象国捎书二十二难,
金銮殿变虎二十三难,(宝象国遇黄袍怪)
平顶山逢魔二十四难,(金银角大王)
莲花洞高悬二十五难,(金银角的干妈九尾狐)
乌鸡国救主二十六难,(狮猁怪)
被魔化身二十七难,
号山逢怪二十八难,(遇红孩儿)
风摄圣僧二十九难,
心猿遭害三十难,
请圣降妖三十一难,
黑河沉没三十二难,(黑水河遇鼍龙)
搬运车迟三十三难,(车迟国斗法)
大赌输赢三十四难,
祛道兴僧三十五难,
路逢大水三十六难,(通天河遇鲤鱼精)
身落天河三十七难,
鱼篮现身三十八难,
金兜山遇怪三十九难,(遇青牛怪)
普天神难伏四十难,
问佛根源四十一难,
吃水遭毒四十二难,(悟空打水遇如意真仙)
西梁国留婚四十三难,(女儿国王留婚,这不是妖怪)
琵琶洞受苦四十四难,(琵琶洞遇蝎子精)
再贬心猿四十五难,(遇假孙悟空六耳猕猴)
难辨猕猴四十六难,
路阻火焰山四十七难,(遇铁扇公主、牛魔王、玉面狐狸一家)
求取芭蕉扇四十八难,
收缚魔王四十九难,
赛城扫塔五十难,(万圣龙王、九头虫)
取宝救僧五十一难,
棘林吟咏五十二难,
小雷音遇难五十三难,(遇黄眉大王)
诸天神遭困五十四难,
稀柿疼秽阻五十五难,(遇蟒蛇精)
朱紫国行医五十六难,
拯救疲癃五十七难,
降妖取后五十八难,(遇赛太岁金毛犼)
七情迷没五十九难,(遇七蜘蛛精)
多目遭伤六十难,(遇多目怪)
路阻狮驼六十一难,(遇狮驼岭三怪:青狮白象大鹏)
怪分三色六十二难,
城里遇灾六十三难,
请佛收魔六十四难,
比丘救子六十五难,(小子国遇鹿精)
辨认真邪六十六难,
松林救怪六十七难,(遇地涌夫人白鼠精)
僧房卧病六十八难,
无底洞遭困六十九难,
灭法国难行七十难,(灭法国王不是妖怪)
隐雾山遇魔七十一难,(遇豹子精)
凤仙郡求雨七十二难,
失落兵器七十三难,(遇黄狮精)
会庆钉钯七十四难,
竹节山遭难七十五难,(遇九灵元圣九头狮子精)
玄英洞受苦七十六难,(避暑避寒避尘三犀牛怪)
赶捉犀牛七十七难,
天竺招婚七十八难,(玉兔精)
铜台府监禁七十九难,
凌云渡脱胎八十难,
通天河遇鼋湿经书

取经流程图

Created with Raphaël 2.2.0 组队 上路 81难? 回家 yes no
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值