认为我已经完成并准备好提交这个小项目,直到我找到这个意外的曲线球。 目标是使用令牌词法分析器来制作解析器。 实质上 R G B and back to red 将输出为:“RGB和回到红色”在他们各自的颜色和属性。使用cout << term_cc 在Windows终端上输出颜色和属性的C++输出到Windows终端上,但不是在Linux上正确输出颜色和属性
一切正常工作在Windows上,但当我把它移到Linux系统它输出的颜色代码没有任何事情发生。
#include
#include
#include
#include
#include
#include
#include "cmd.h"
#include "Lexer.h" // you should make use of the provided Lexer
#include "term_control.h"
#include "error_handling.h"
using namespace std;
map colorMap;
map attribMap;
string display(const string& expression)
{
if(validate(expression) == "VALID") {
Lexer lex;
Token tok;
vector colorVect;
vector attribVect;
lex.set_input(expression);
while(lex.has_more_token()){
tok = lex.next_token();
string sTok = tok.value;
if(tok.type == TAG && tok.value.at(0) != '/'){
cout<
colorVect.push_back(colorMap[tok.value]);
attribVect.push_back(attribMap[tok.value]);
}
if(tok.type == TAG && tok.value.at(0) == '/'){
colorVect.pop_back();
cout<
}
if(tok.type != TAG){
cout<
}
}
}
else if(validate(expression) != "VALID") return validate(expression);
return "";
}
_
cout
是specfic方法,其中的问题是躲在我一直在寻找周围,似乎无法找到正确的方法。
cout<
该方法在Linux系统上正确显示颜色,但我不能使用该方法的属性。
我一直在阅读的一切都只涉及颜色而不是颜色和属性,他们也使用echo命令和特定终端的硬编码颜色。这些都需要对我的所有代码进行重大更改,并导致它无法在Windows上运行,只能在Linux上运行,所以我试图避免这种情况。
在此先感谢有关此问题的任何建议,我希望每个人都能够在12之前得到这个结果!
2014-09-24
Michael
+0
什么是'term_cc'或'term_fg'?你在用图书馆吗?如果是这样,它应该在问题或标签中提及。 –
2014-09-24 01:38:08
+0
您是否在您提供的代码中表示cout 2014-09-24 01:41:23
+0
添加了一切抱歉的混蛋家伙。 和cout << term_cc @MichaelPetch –
2014-09-24 01:54:41