怎样将字符串中的'\'替换成'\\'?

时间:2023-01-04 00:04:19
如题:
比如有一个字符串“c:\temp\test.mdb”
替换成“c;\\temp\\test.mdb”

12 个解决方案

#1


干嘛要这样替换?我想你的程序一定要有问题

不过如果你硬要这么干就这样:

CString str
str.Replace( "\\", "\\\\" );

#2


一般\\是给编译器来识别的,除非你是在写代码,一般程序里不用\\

程序和代码是不一样的

#3


“c:\temp\test.mdb”
这个字符串肯定有问题。如果把它打印出来将显示如下
c:      emp     est.mdb
一般路径要么“c:/temp/test.mdb”
要么“c:\\temp\\test.mdb”
你要替换的话可以这样
CString strTemp = "c:\temp\test.mdb"
strTemp.Replace('\t', '\\');

#4


不好意思,错了 应该是
CString strTemp = "c:\temp\test.mdb"
strTemp.Replace('\t', '\\t');

#5


首先说明一中,在字符串里面"\\"将会被转义为"\",所以逻辑上的表示c:\temp\test.mdb以字符串的形式表示便是c:\\temp\\test.mdb,而逻辑上的表示c;\\temp\\test.mdb以字符串的形式表示便是c:\\\\temp\\\\test.mdb,以下是是转换代码:

         CString str="c:\\temp\\test.mdb";
str.Replace("\\","\\\\");

#6


首先说明一下,在字符串里面"\\"将会被转义为"\",所以逻辑上的表示c:\temp\test.mdb以字符串的形式表示便是c:\\temp\\test.mdb,而逻辑上的表示c;\\temp\\test.mdb以字符串的形式表示便是c:\\\\temp\\\\test.mdb,以下是是转换代码:

         CString str="c:\\temp\\test.mdb";//逻辑上就是C:\temp\test.mdb
str.Replace("\\","\\\\");

#7


domustdohz(迷茫)整个一胡说八道,你自己不清楚,就不要把楼主往沟里带!



\是转义字符,当编译器编译源代码中的字符串识,会将“\”和“\后面的一个字符”认为是一个转义字符,而不是两个字符!

所以当你要在源代码里面写这样的东西:file.open( "c:\\winnt\\system32"),就必须要用\\,以免编译器识别错乱。

但是,当你的字符串已经成为内存中的数据,它必定是这样的形式:c:\winnt\system32。因为内存中的数据是不需要转义的,该是什么就是什么,一个字母都不能差!

比如有一个文本文件里面有一行是这样写的“c:\winnt\system32”,你想把这行读出来,再打开这个目录,没有问题,不需要做任何强制转换,因为这和编译器没有任何关系,不存在转义。

再如,你有一个控制台或DOS的程序,接受用户输入一个目录,并将其打开。用户输入“c:\winnt\system32”,你直接打开就好了,也不需要任何转换!

记得,除非你的字符串是在源代码文件中以字符串的形式出现,也就是用双引号括起来的那种,否则一概不用\\

#8




CString strTemp = "c:\temp\test.mdb"
strTemp.Replace('\t', '\\');

如果你这么替换的话,‘t’全没了!

#9


谢谢大家的热情指导,也许这个问题我一开始就,问错了,在问大家的同时,我其实已经找到了大家
说的替换方法。没关系,等下我再开一个贴。
我先说说我这样做的原因。
我是做了两个公共函数;
1、创建ACCESS数据库,返回数据库的全路径名。
2、获得全局数据库的全路径名,连接刚刚创建的数据库,创建一个数据库表。
现在问题出在第二个函数,获取路径名,以后连接数据库时报错。
大家分析一下,是不是字符串名称的问题。

#10


domustdohz(迷茫)整个一胡说八道,你自己不清楚,就不要把楼主往沟里带!
\是转义字符,当编译器编译源代码中的字符串识,会将“\”和“\后面的一个字符”认为是一个转义字符,而不是两个字符!
===============================================
你写程序测试过了吗?
晕倒,我有说错吗?
这个字符串肯定有问题。如果把它打印出来将显示如下
c:      emp     est.mdb
一般路径要么“c:/temp/test.mdb”
要么“c:\\temp\\test.mdb”
你要替换的话可以这样
CString strTemp = "c:\temp\test.mdb"
strTemp.Replace('\t', '\\t');
这些我都是写代码测试过了。
我相信实践是检验真理的唯一标准。

#11


CString strTemp = "c:\temp\test.mdb"
strTemp.Replace('\t', '\\');
如果你这么替换的话,‘t’全没了!
=====================================
 回复人: domustdohz(迷茫) ( ) 信誉:100  2005-6-16 10:52:49  得分: 0     
不好意思,错了 应该是
CString strTemp = "c:\temp\test.mdb"
strTemp.Replace('\t', '\\t');

  
 

#12


回复人: fireseed(奶油狗【Dream of violin】) ( ) 信誉:96  2005-6-16 11:21:44  得分: 0  
  
domustdohz(迷茫)整个一胡说八道,你自己不清楚,就不要把楼主往沟里带!
====================================
楼主是在说字符串,又不是说内存里怎么样?
所以我说路径的字符串,要么要么“c:/temp/test.mdb”
要么“c:\\temp\\test.mdb”
====================
我当然知道\是转义字符了,要不然我怎么会说
“c:\temp\test.mdb”
这个字符串肯定有问题。如果把它打印出来将显示如下
c:      emp     est.mdb



#1


干嘛要这样替换?我想你的程序一定要有问题

不过如果你硬要这么干就这样:

CString str
str.Replace( "\\", "\\\\" );

#2


一般\\是给编译器来识别的,除非你是在写代码,一般程序里不用\\

程序和代码是不一样的

#3


“c:\temp\test.mdb”
这个字符串肯定有问题。如果把它打印出来将显示如下
c:      emp     est.mdb
一般路径要么“c:/temp/test.mdb”
要么“c:\\temp\\test.mdb”
你要替换的话可以这样
CString strTemp = "c:\temp\test.mdb"
strTemp.Replace('\t', '\\');

#4


不好意思,错了 应该是
CString strTemp = "c:\temp\test.mdb"
strTemp.Replace('\t', '\\t');

#5


首先说明一中,在字符串里面"\\"将会被转义为"\",所以逻辑上的表示c:\temp\test.mdb以字符串的形式表示便是c:\\temp\\test.mdb,而逻辑上的表示c;\\temp\\test.mdb以字符串的形式表示便是c:\\\\temp\\\\test.mdb,以下是是转换代码:

         CString str="c:\\temp\\test.mdb";
str.Replace("\\","\\\\");

#6


首先说明一下,在字符串里面"\\"将会被转义为"\",所以逻辑上的表示c:\temp\test.mdb以字符串的形式表示便是c:\\temp\\test.mdb,而逻辑上的表示c;\\temp\\test.mdb以字符串的形式表示便是c:\\\\temp\\\\test.mdb,以下是是转换代码:

         CString str="c:\\temp\\test.mdb";//逻辑上就是C:\temp\test.mdb
str.Replace("\\","\\\\");

#7


domustdohz(迷茫)整个一胡说八道,你自己不清楚,就不要把楼主往沟里带!



\是转义字符,当编译器编译源代码中的字符串识,会将“\”和“\后面的一个字符”认为是一个转义字符,而不是两个字符!

所以当你要在源代码里面写这样的东西:file.open( "c:\\winnt\\system32"),就必须要用\\,以免编译器识别错乱。

但是,当你的字符串已经成为内存中的数据,它必定是这样的形式:c:\winnt\system32。因为内存中的数据是不需要转义的,该是什么就是什么,一个字母都不能差!

比如有一个文本文件里面有一行是这样写的“c:\winnt\system32”,你想把这行读出来,再打开这个目录,没有问题,不需要做任何强制转换,因为这和编译器没有任何关系,不存在转义。

再如,你有一个控制台或DOS的程序,接受用户输入一个目录,并将其打开。用户输入“c:\winnt\system32”,你直接打开就好了,也不需要任何转换!

记得,除非你的字符串是在源代码文件中以字符串的形式出现,也就是用双引号括起来的那种,否则一概不用\\

#8




CString strTemp = "c:\temp\test.mdb"
strTemp.Replace('\t', '\\');

如果你这么替换的话,‘t’全没了!

#9


谢谢大家的热情指导,也许这个问题我一开始就,问错了,在问大家的同时,我其实已经找到了大家
说的替换方法。没关系,等下我再开一个贴。
我先说说我这样做的原因。
我是做了两个公共函数;
1、创建ACCESS数据库,返回数据库的全路径名。
2、获得全局数据库的全路径名,连接刚刚创建的数据库,创建一个数据库表。
现在问题出在第二个函数,获取路径名,以后连接数据库时报错。
大家分析一下,是不是字符串名称的问题。

#10


domustdohz(迷茫)整个一胡说八道,你自己不清楚,就不要把楼主往沟里带!
\是转义字符,当编译器编译源代码中的字符串识,会将“\”和“\后面的一个字符”认为是一个转义字符,而不是两个字符!
===============================================
你写程序测试过了吗?
晕倒,我有说错吗?
这个字符串肯定有问题。如果把它打印出来将显示如下
c:      emp     est.mdb
一般路径要么“c:/temp/test.mdb”
要么“c:\\temp\\test.mdb”
你要替换的话可以这样
CString strTemp = "c:\temp\test.mdb"
strTemp.Replace('\t', '\\t');
这些我都是写代码测试过了。
我相信实践是检验真理的唯一标准。

#11


CString strTemp = "c:\temp\test.mdb"
strTemp.Replace('\t', '\\');
如果你这么替换的话,‘t’全没了!
=====================================
 回复人: domustdohz(迷茫) ( ) 信誉:100  2005-6-16 10:52:49  得分: 0     
不好意思,错了 应该是
CString strTemp = "c:\temp\test.mdb"
strTemp.Replace('\t', '\\t');

  
 

#12


回复人: fireseed(奶油狗【Dream of violin】) ( ) 信誉:96  2005-6-16 11:21:44  得分: 0  
  
domustdohz(迷茫)整个一胡说八道,你自己不清楚,就不要把楼主往沟里带!
====================================
楼主是在说字符串,又不是说内存里怎么样?
所以我说路径的字符串,要么要么“c:/temp/test.mdb”
要么“c:\\temp\\test.mdb”
====================
我当然知道\是转义字符了,要不然我怎么会说
“c:\temp\test.mdb”
这个字符串肯定有问题。如果把它打印出来将显示如下
c:      emp     est.mdb