“如何打印?”\";在c++; 我在C++中有一个未知字符串,包含“\n”“t”等。 说,

“如何打印?”\";在c++; 我在C++中有一个未知字符串,包含“\n”“t”等。 说,,c++,C++,如果unknown1=“\n\t\n\t\n\n\n”现在我要打印 "\n\t\n\t\n\n\n\n\n" 除了一堆空的空间之外,你还可以直接看到屏幕。。。。我该怎么做?记住,我不知道未知中有什么 要强调的是,我知道如果我们将每个这样的字符的“\n”改为“\n”,则可以显式打印\n。。。但问题是我不知道未知的内在是什么。。。它是从文件中读取的 感谢您的回答,但我们还有其他问题: 回答的程序还有一个问题。。。假设我不知道文件中唯一可能的特殊字符是\n或\t。。。也许有类似\u的东西\L我认为我

如果unknown1=“\n\t\n\t\n\n\n”现在我要打印

"\n\t\n\t\n\n\n\n\n"
除了一堆空的空间之外,你还可以直接看到屏幕。。。。我该怎么做?记住,我不知道未知中有什么

要强调的是,我知道如果我们将每个这样的字符的“\n”改为“\n”,则可以显式打印\n。。。但问题是我不知道未知的内在是什么。。。它是从文件中读取的

感谢您的回答,但我们还有其他问题:


回答的程序还有一个问题。。。假设我不知道文件中唯一可能的特殊字符是\n或\t。。。也许有类似\u的东西\L我认为我们不能用尽一切可能,对吗?是否有一种内置的C++函数来输出相应的字符?

< p> <代码> \n>代码>代码> > t>代码>是转义序列,但是可以在它们之前添加额外的<代码> \/>代码来打印它们,<代码> \\/Cuff>用于获得单个反斜杠。单个反斜杠表示它是转义序列(如果它是有效的),但两个反斜杠表示反斜杠字符,因此每当需要输出反斜杠时,只需添加其中两个

所以,如果你使用

string unknown1="\\n\\t\\n\\t\\n\\n\\n\\n\\n";
您将获得所需的输出

如果您正在读取文件,请执行以下操作

string unknown1="\n\t\n\t\n\n\n\n\n";
for ( int i = 0 ; i < unknown1.length() ; i++ )
{
    if( unknown1[i] == '\n')
      cout<<"\\n";
}
string unknown1=“\n\t\n\t\n\n\n\n”;
对于(int i=0;i不能像这样对您担心的不可打印字符运行特定检查

char c;
while(c!=EOF){
    if(c=='\n')printf("\\n");
    if(c=='\t')printf("\\t");

    and so on and so forth.
    c = the next charater;
}

OOPS,我写了C++而不是C++,但是@ Arun A.S有正确的语法

您可以创建自己的函数来打印字符,使用STD::MAP:< /P>
void printChar( const char ch )
{
  static const std::map< char, std::string > char_map = {
    { '\n', "\\n" }
    // add mappings as needed
  };

  auto found = char_map.find( ch );
  if ( found != char_map.end() )
    std::cout << found->second;
  else
    std::cout << ch;
}

// usage
std::string str = "a\nbc";
for ( auto ch : str ) printChar ( ch );
void printChar(const char ch)
{
静态常量std::mapchar\u map={
{'\n',“\\n”}
//根据需要添加映射
};
自动查找=字符映射查找(ch);
if(find!=char\u map.end())
std::cout秒;
其他的

std::cout参见下面的示例。您可以将自己的字符添加到
开关
以扩展它处理的字符

#include <iostream>
#include <string>

std::string escapeSpecialChars(const std::string& str)
{
    std::string result;

    for(auto c : str)
    {
        switch(c)
        {
            case '\n':
                result += "\\n";
                break;

            case '\t':
                result += "\\t";
                break;

            default:
                result += c;
                break;
        }
    }

    return result;
}

int main()
{
    std::string str = "\n\n\n\t";

    std::cout << escapeSpecialChars(str);

    return 0;
}
#包括
#包括
std::string escapspecialchars(const std::string&str)
{
std::字符串结果;
用于(自动c:str)
{
开关(c)
{
案例“\n”:
结果+=“\\n”;
打破
案例'\t':
结果+=“\\t”;
打破
违约:
结果+=c;
打破
}
}
返回结果;
}
int main()
{
std::string str=“\n\n\t”;

std::然后不能用一个额外的
\
作为
string unknown1=“\\n\\t\\n\\t\\n\\n\\n\\n\\n”
来转义
\
,问题是我不知道unknown1里面是什么……它是从一个文件中读取的……好的,所以替换(我的意思是
std::string
有一个专用的函数)换行符和所需字符串,制表符和其他字符串。顺便说一句,对于文字,不需要从所有内容中转义:
R”(\n\t\n\t\n\n\n\n\n)
@chris
std::string
没有专用于查找/替换字符的函数。@Brett,我指的是专用于用字符串替换字符的函数(我没有说查找,但也有一个用于查找的函数)。我知道你必须多次调用它才能替换每个事件,这与用单个字符替换单个字符不同,后者是对
std::replace
的一次调用。问题是我不知道其中有什么未知的内容1…它是从文件读取的…@Arun OP希望以原始方式打印文件内容,如果它们是一个ne文件中的w行然后打印
\n
而不是打印新行,它需要读取文件并逐字节扫描它的任何
\
,然后写两个
\
所示的过程还有一个问题…假设我不知道文件中唯一可能的特殊字符是\n或\t…可能有类似\u的东西?我想我们不能排除每种可能性吗?有没有用C++函数来构建相应的字符?@ WASABI123,它确实有这个问题,但据我所知,没有这个功能(但也许你可以创建一个用于进一步使用)。。如果有,那么我们就不会发布这样的答案。你现在唯一能做的就是硬编码它(我在我的答案中提供了一个指向所有转义序列的链接就是为了这个)。从概念上讲,没有问题,你也是对的,所以这是一个有用的答案OP@MattMcNabb我以前从未见过这个(我三个月前才学会C)谢谢你给我的提示!这个程序有一个额外的问题……假设我不知道文件中唯一可能的特殊字符是\n或\t……也许有一些类似u \ l的东西?我想我们不能排除每一种可能性吗?有没有内置的C++函数来输出相应的字符?DICATE还有一个新的假设……假设我不知道文件中唯一可能的特殊字符是\n或\t……可能有一些类似u \ l的东西吗?我认为我们不能排除每一种可能性。对C++的函数是否有一种内置的函数来输出相应的字符?这就是为什么我添加注释来添加字符MAPI的原因。ngs。如果您需要制表符和/或其他特殊字符,只需花时间将它们添加到映射中。指示的过程还有一个问题…假设我不知道文件中唯一可能的特殊字符是\n或\t…可能有类似\u?\l的字符?我想我们不能用尽所有可能,对吗?有k吗内置的C++函数的Id只是输出相应的字符?@ WASABI123参考编译器文档或C++标准,查找所有可能的列表。
#include <iostream>
#include <string>

std::string escapeSpecialChars(const std::string& str)
{
    std::string result;

    for(auto c : str)
    {
        switch(c)
        {
            case '\n':
                result += "\\n";
                break;

            case '\t':
                result += "\\t";
                break;

            default:
                result += c;
                break;
        }
    }

    return result;
}

int main()
{
    std::string str = "\n\n\n\t";

    std::cout << escapeSpecialChars(str);

    return 0;
}