C++ 从变量输出字符串文字

C++ 从变量输出字符串文字,c++,c++11,C++,C++11,我想知道是否有可能从一个预设变量输出一个原始字符串,我不能改变它的值。例如: string test = "test\ntest2"; cout << test; 是否可以运行与上述类似的代码,但更改cout语句以打印原始字符串,如下所示: test\ntest2 转义序列\x仅转换为一个字符 可能有一些平台的尾行字符打印为\n,但这完全取决于实现 然后将其转换为两个字符(\和x),意味着您必须修改字符串本身 最简单的方法是创建一个自定义函数 void print_all(std

我想知道是否有可能从一个预设变量输出一个原始字符串,我不能改变它的值。例如:

string test = "test\ntest2";
cout << test;
是否可以运行与上述类似的代码,但更改cout语句以打印原始字符串,如下所示:

test\ntest2

转义序列
\x
仅转换为一个字符

可能有一些平台的尾行字符打印为
\n
,但这完全取决于实现

然后将其转换为两个字符(
\
x
),意味着您必须修改
字符串本身

最简单的方法是创建一个自定义函数

void print_all(std::string s)
{
    for (char c : s) {
        switch (c) {
            case '\n' : std::cout << "\\n"; break;
            case '\t' : std::cout << "\\t"; break;

            // etc.. etc..

            default : std::cout << c;
        }
    }
}
void print_all(std::string s)
{
用于(字符c:s){
开关(c){

案例“\n”:std::cout如果您有c++11,也可以使用原始字符串文本

#include <iostream>

using namespace std;

int main()
{
    cout << R"(test\ntest2)" << endl;
    return 0;
}
#包括
使用名称空间std;
int main()
{

基本转义
“test\\ntest2”
如何?变量已设置,我无法更改它,正如我在问题中所述。我明白了。最后一段是误导性的,因为它暗示您可以更改文本。(但我编辑主要是为了收回我的投票…)您是要获取原始表示,还是只是一个明确的表示?蛮力方法是将字符串中出现的
“\n”
替换为
“\\n”
(然后对所有其他转义序列重复)。请参见代码的SO问题。我最初在帖子中有它,但它似乎已被编辑掉,但我根本无法访问存储在变量中的字符串,我必须使用变量声明
#include <iostream>

using namespace std;

int main()
{
    cout << R"(test\ntest2)" << endl;
    return 0;
}