Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/145.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;使用cout<;输出到windows终端&书信电报;术语_cc<;颜色、默认值、属性>;在Windows上正确输出颜色和属性,但在Linux上不正确_C++_Linux_Parsing_Colors - Fatal编程技术网

C++ C++;使用cout<;输出到windows终端&书信电报;术语_cc<;颜色、默认值、属性>;在Windows上正确输出颜色和属性,但在Linux上不正确

C++ C++;使用cout<;输出到windows终端&书信电报;术语_cc<;颜色、默认值、属性>;在Windows上正确输出颜色和属性,但在Linux上不正确,c++,linux,parsing,colors,C++,Linux,Parsing,Colors,我以为我已经完成并准备好提交这个小项目,直到我得到这个意想不到的曲线球。 目标是使用令牌lexer生成解析器。 基本上 R G B返回红色 将以各自的颜色和属性输出为:“RGB和返回红色” 在windows上一切都很好,但当我将它移到Linux系统时,它会输出颜色代码,而不会发生任何事情 #include <iostream> #include <sstream> #include <stack> #include <map> #include &

我以为我已经完成并准备好提交这个小项目,直到我得到这个意想不到的曲线球。 目标是使用令牌lexer生成解析器。 基本上
R G B返回红色
将以各自的颜色和属性输出为:“RGB和返回红色”

在windows上一切都很好,但当我将它移到Linux系统时,它会输出颜色代码,而不会发生任何事情

#include <iostream>
#include <sstream>
#include <stack>
#include <map>
#include <cstdlib>
#include <vector> 
#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<string, term_colors_t> colorMap;    
map<string, term_attrib_t> attribMap;
string display(const string& expression) 
{
if(validate(expression) == "VALID") {
Lexer lex;
Token tok;

vector<term_colors_t> colorVect;
vector<term_attrib_t> 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<<term_cc(colorMap[tok.value], DEFAULT_COLOR, attribMap[tok.value]);
            colorVect.push_back(colorMap[tok.value]);
            attribVect.push_back(attribMap[tok.value]);
        }
        if(tok.type == TAG && tok.value.at(0) == '/'){
        colorVect.pop_back();
        cout<<term_cc(colorVect.back(), DEFAULT_COLOR, attribVect.back());
        }
        if(tok.type != TAG){
            cout<<tok.value;
        }
    }
}
else if(validate(expression) != "VALID")    return validate(expression);
return "";
#包括
#包括
#包括
#包括
#包括
#包括
#包括“cmd.h”
#包括“Lexer.h”//您应该使用提供的Lexer
#包括“term_control.h”
#包括“错误处理.h”
使用名称空间std;
地图彩色地图;
地图属性图;
字符串显示(常量字符串和表达式)
{
如果(验证(表达式)=“有效”){
Lexer-lex;
令牌tok;
向量彩色向量;
向量属性向量;
lex.set_输入(表达式);
而(lex.has_more_token()){
tok=lex.next_token();
字符串sTok=tok.value;
if(tok.type==TAG&&tok.value.at(0)!='/')){

cout我不清楚
colorMap
attribMap
在哪里初始化,以及初始化到什么值,我只是出于本能,但是
colorMap
的键似乎是颜色,
attribMap
的键是属性。在这种情况下,
下划线
不是
colorMa中的键p
红色
不是
attribMap
中的键

在程序中,您可以执行以下操作:

if(tok.type == TAG && tok.value.at(0) != '/'){
        cout<<term_cc(colorMap[tok.value], DEFAULT_COLOR, attribMap[tok.value]);
if(tok.type==TAG&&tok.value.at(0)!='/')){

请问什么是
term\u cc
term\u fg
?您是否使用了一些库?如果是,应该在问题或标签中提及。您的意思是
可以对混淆的家伙表示抱歉。您的lexer可以从文件中读取,如果它正确地解释了Windows上的换行符是CRLF的事实吗在Linux上它通常是LF?它从控制台获取输入,因此输入将显示这是红色lexer是由Linux上的老师创建的,我们不会大声触摸它,所以我认为是这样。当它得到一个令牌时,它知道它是一个“标记”,并解析出箭头,返回一个字符串“红色”@MichaelPetch我看不出这个程序在Windows上也能正常工作。它可能会运行,但我怀疑你是否能得到预期的结果。
    cout<<term_fg(color)
if(tok.type == TAG && tok.value.at(0) != '/'){
        cout<<term_cc(colorMap[tok.value], DEFAULT_COLOR, attribMap[tok.value]);