如何将文本中的字符 反斜杠 转化成转义字符

First_Soul 2011-06-13 01:47:05
我的字符串的内容是 "ha\t haha"
用消息框显示出来的是 ha\t haha
说明字符串中的'\'也就是‘\\’
我要用什么方法才能把字符串中的 \ 变成转义字符 而不是直接显示 \ 呢
...全文
497 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
shi3590 2011-06-13
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 first_soul 的回复:]
不行啊
我的字符串很长而且有很多的转义字符,其中还包括像\u5e74 这样的中文编码。
像楼上说的方法来改是不太现实得吧。
[/Quote]
恩。我觉得你可以换个思路了。
单单从程序上解可能有局限性了,而且容易钻牛角尖。
试试别的方法把字符串进入程序前就过滤一遍吧。
比如文件啊,数据库啊啥的。
First_Soul 2011-06-13
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 shi3590 的回复:]

引用 11 楼 dizuo 的回复:
string str("ha\\thaha");

cout << str << endl;

str.replace(2, 2, "\t");

cout << str << endl;

恩,这个可以的。
C语言的话我目前想到的只能也是把可能出现的转移字符判断和转换一下。
[/Quote]
这个虽然在他的程序里可以,但是实用性不够啊~
First_Soul 2011-06-13
  • 打赏
  • 举报
回复
不行啊
我的字符串很长而且有很多的转义字符,其中还包括像\u5e74 这样的中文编码。
像楼上说的方法来改是不太现实得吧。
shi3590 2011-06-13
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 dizuo 的回复:]
string str("ha\\thaha");

cout << str << endl;

str.replace(2, 2, "\t");

cout << str << endl;
[/Quote]
恩,这个可以的。
C语言的话我目前想到的只能也是把可能出现的转移字符判断和转换一下。
stein42 2011-06-13
  • 打赏
  • 举报
回复
转义是编译器自动进行的。

要不是拼写错误的话,就是那个函数有问题。
你用printf输出试一下。
ryfdizuo 2011-06-13
  • 打赏
  • 举报
回复
string str("ha\\thaha");

cout << str << endl;

str.replace(2, 2, "\t");

cout << str << endl;
Jonix 2011-06-13
  • 打赏
  • 举报
回复
随手写写的,写的快了点,不好意思漏了一个... :S
shi3590 2011-06-13
  • 打赏
  • 举报
回复
把斜线打反了。。应该是\
shi3590 2011-06-13
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 jonix 的回复:]
100分啊,这么简单的问题:
char* ptr = "ha\t haha";
char* newptr = new char[200];
memset(newptr, 0x00, 200);
char* ptr2 = newptr;

while(*ptr)
{
char* nextptr = ptr+1;
if ( *ptr=='\' && *next……
[/Quote]
不对,LZ的字符串初始是2个//,不然是打印不出/t的。
所以LZ需要的是怎么将字符串里面的//变成/。
而且当当从字符串中是无法判断/的,LZ的问题对得起那100分。
ryfdizuo 2011-06-13
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 luciferisnotsatan 的回复:]

引用 5 楼 jonix 的回复:

100分啊,这么简单的问题:
char* ptr = "ha\t haha";
char* newptr = new char[200];
memset(newptr, 0x00, 200);
char* ptr2 = newptr;

while(*ptr)
{
char* nextptr = ptr+1;
if ( *ptr=='\……
[/Quote]
恩,正解。
luciferisnotsatan 2011-06-13
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 jonix 的回复:]

100分啊,这么简单的问题:
char* ptr = "ha\t haha";
char* newptr = new char[200];
memset(newptr, 0x00, 200);
char* ptr2 = newptr;

while(*ptr)
{
char* nextptr = ptr+1;
if ( *ptr=='\' && *n……
[/Quote]

if ( *ptr=='\' && *nextptr =='t' )
没有单个字符叫 '\',要用 '\\'表示
Jonix 2011-06-13
  • 打赏
  • 举报
回复
100分啊,这么简单的问题:
char* ptr = "ha\t haha";
char* newptr = new char[200];
memset(newptr, 0x00, 200);
char* ptr2 = newptr;

while(*ptr)
{
char* nextptr = ptr+1;
if ( *ptr=='\' && *nextptr =='t' )
{
*ptr2 = '\t';

ptr+=2;

}else
{
*ptr2 = *ptr;
ptr++;
}
ptr2++;
}

printf("%s", newptr);
First_Soul 2011-06-13
  • 打赏
  • 举报
回复
。。
我就是想问怎么解析呢,函数中要怎么处理呢。
我的字符串中不只一个反斜杠要转化,还有很多。
具体要怎么把字符\转化成转义字符勒。
c_losed 2011-06-13
  • 打赏
  • 举报
回复
你可以处理消息框显示的时候 \t
maoxing63570 2011-06-13
  • 打赏
  • 举报
回复
自己写个函数处理下
wuyu637 2011-06-13
  • 打赏
  • 举报
回复
自己解析。

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧