首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >格式化C++中字符串的输出

格式化C++中字符串的输出
EN

Stack Overflow用户
提问于 2020-03-10 14:56:19
回答 1查看 62关注 0票数 1

老实说--不知道如何表达这个问题的标题。但基本上,我希望有一个C++程序,它允许输入一个字符串(消息)和一个颜色-它将输出该颜色的字符串到控制台。就像PowerShell对“写主机”和"-ForegroundColor“所做的一样。

我把一切都做好了。只是我想要自动处理转义序列的能力。所以如果我运行这个:

代码语言:javascript
代码运行次数:0
运行
复制
c:\>myprogram.exe -Message "Hello there" -ForegroundColor Green

我得到绿色的“你好”。到目前为止还不错。但如果我这么做

代码语言:javascript
代码运行次数:0
运行
复制
c:\>myprogram.exe -Message "Hello\nthere" -ForegroundColor Green

我只听到一句“你好\n那里”。因为有了\n,我想在两行上看到这个。与\t一样,我希望对其进行解释并在输出中看到一个选项卡。

经过所有的颜色处理之后,这基本上就是代码所要做的:

代码语言:javascript
代码运行次数:0
运行
复制
//
// Display the message
//

Message += "\n";
std::cout << Message;
printf("%s", Message.c_str());

目前,printfstd::cout都只是看看它们的行为是否不同--它们没有。我猜行Message += "\n";是在内部处理以添加实际的新行,而不是在发送到std::coutprintf时处理,因为最终的新行确实会按预期的方式处理。但是当包含在输入参数中提供的变量消息中时.不是的。

有没有办法只处理字符串中的所有转义码?或者我必须基本上操纵字符串,也就是说,根据\n分解它,然后单独输出字符串的每个部分?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-10 15:07:40

C/ C++字符串转义序列由编译器解释,而不是由运行时系统解释。因此,是的,您必须执行自己的运行时字符串解析来处理您想要支持的自定义转义序列。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60620194

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档