有没有办法在Ubuntu Linux上使用C编程语言将彩色文本打印到文件中,您可以使用带有printf()的颜色代码并将彩色文本打印到控制台或终端窗口,但如何使用颜色将文本打印到文本文件?
答案 0 :(得分:0)
简短的回答是你做不到,答案很长,你需要在可用的许多格式上写下某种标记以及你的文本。您没有通用标准可供使用,因此您需要选择一个。
颜色代码特定于控制台,对于打印没有用,如果你只是将文本重新显示回屏幕,没问题,但如果你想打印它,那么你需要做一些工作
最简单的方法是编写HTML标签,以便在浏览器中查看并从那里打印。使用打印机的标记代码写入打印机也是可能的,并且在某些打印机上可能很简单(或几乎不可能)。缺点是这是打印机特定的解决方案。如果您真的是PDF格式(仅仅是文本),RTF或任何其他文档格式的雄心勃勃的输出,但这需要时间和技能。
答案 1 :(得分:0)
我正在使用这个解决方案,如果您使用的是流和C ++,那么这个解决方案非常简洁
#include <cstdlib>
#include <iostream>
#include <sstream>
namespace sps {
namespace colors {
enum color {
none = 0x00,
black = 0x01,
red = 0x02,
green = 0x03,
yellow = 0x04,
blue = 0x05,
magenta = 0x06,
cyan = 0x07,
white = 0x08
};
}
namespace faces {
enum face {
normal = 0x00,
bold = 0x01,
dark = 0x02,
uline = 0x04,
invert = 0x07,
invisible = 0x08,
cline = 0x09
};
}
/**
* Generate string for color codes for std::iostream's
*
* @param foreground
* @param background
*
* @return
*
* Usage:
*
* using namespace sps;
* std::cout << "These words should be colored [ "
* << set_color(colors::red) << "red "
* << set_color(colors::green) << "green "
* << set_color(colors::blue) << "blue"
* << set_color() << " ]" << std::endl;
*
*/
static inline std::string set_color(sps::colors::color foreground = sps::colors::none,
sps::colors::color background = sps::colors::none) {
std::stringstream s;
s << "\033[";
if (!foreground && ! background){
s << "0"; // reset colors if no params
}
if (foreground) {
s << 29 + foreground;
if (background) s << ";";
}
if (background) {
s << 39 + background;
}
s << "m";
return s.str();
}
/**
*
*
* @param face
*
* @return
*/
static inline std::string set_face(sps::faces::face face = sps::faces::normal) {
std::stringstream s;
s << "\033[";
if (!face) {
s << "0"; // reset face
}
if (face) {
s << face;
}
s << "m";
return s.str();
}
}
int main(int agrc, char* argv[])
{
using namespace sps;
std::cout << "These words should be colored [ "
<< set_color(colors::red) << "red "
<< set_color(colors::green) << "green "
<< set_color(colors::blue) << "blue "
<< set_color(colors::cyan) << "cyan "
<< set_color(colors::magenta) << "magenta "
<< set_color(colors::yellow) << "yellow"
<< set_color() << " ]" << std::endl;
return EXIT_SUCCESS;
}