“如何打印?”\";在c++; 我在C++中有一个未知字符串,包含“\n”“t”等。 说,
如果unknown1=“\n\t\n\t\n\n\n”现在我要打印“如何打印?”\";在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我认为我
"\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)
@chrisstd::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;
}