比如:
要替换字符串 "C;\windows\system" 中的 "\" 为 "\\"。
这样原来的字符串长度就会增加!
怎么办?谢谢!
19 个解决方案
#1
如果是用标准C++的话,你可以用泛型算法中的replace函数,它支持在string等容器中替换.
#2
//ReplaceString() 替换字符串的片段(此版本要搜索两次字符串,速度不快,但内存消耗最少)
//copyleft by xingweiwei(alex.xing@163.com, http://b7156.xici.net)
//1999-05-06
//sSrc - 待替换字符串
//sOld - 旧“片段”
//sNew - 新“片段”
//char * - 返回新字符串,记得用完后用 free() 释放
char * ReplaceString(const char * sSrc, const char * sOld, const char * sNew)
{
//计算 sOld 与 sNew 长度差
size_t nOldLen = strlen(sOld);
size_t nNewLen = strlen(sNew);
signed nDiff = (signed) (nNewLen) - (signed) (nOldLen);
//搜索统计 pOldStr 中有多少个 sOld
int nMatch = 0;
for(char * p = sSrc;;)
{
p = strstr(p, sOld); //搜索匹配片段Match
if ( p != NULL ) //如果找到一个Match
{
nMatch++; //计数
p += nOldLen; //搜索指针指向这个Match之后
}
else //如果再也找不到
{
break; //搜索结束
}
}
//计算目标字符串长度
signed nDestLen = (signed) (strlen(sSrc)) + nMatch * nDiff;
assert ( nDestLen >= 0 );
//分配空间
char * pDestMem = (char *) malloc(nDestLen+1);
if ( pDestMem == NULL )
{
return NULL;
}
//分段拷贝
char * pDest = pDestMem;
char * pSrc = sSrc;
for(;;)
{
char * pMatch = strstr(pSrc, sOld); //搜索匹配片段Match
if ( pMatch != NULL )
{
size_t nInterLen = pMatch - pSrc; //相邻Match间的部分Inter的长度
if ( nInterLen > 0 )
{
memcpy(pDest, pSrc, nInterLen); //拷贝Inter
pDest += nInterLen; //拷贝宿指针指向Inter之后
}
memcpy(pDest, sNew, nNewLen); //拷贝sNew,为提高效率,此处不用 strcat()
pDest += nNewLen; //拷贝宿指针指向sNew之后
pSrc = pMatch + nOldLen; //拷贝源指针指向sOld之后
}
else
{
break;
}
}
strcpy(pDest, pSrc); //拷贝最后一个Match后的一段,可能只是一个null-terminator,也可能是整个sSrc
//返回结果
return pDestMem;
}
//copyleft by xingweiwei(alex.xing@163.com, http://b7156.xici.net)
//1999-05-06
//sSrc - 待替换字符串
//sOld - 旧“片段”
//sNew - 新“片段”
//char * - 返回新字符串,记得用完后用 free() 释放
char * ReplaceString(const char * sSrc, const char * sOld, const char * sNew)
{
//计算 sOld 与 sNew 长度差
size_t nOldLen = strlen(sOld);
size_t nNewLen = strlen(sNew);
signed nDiff = (signed) (nNewLen) - (signed) (nOldLen);
//搜索统计 pOldStr 中有多少个 sOld
int nMatch = 0;
for(char * p = sSrc;;)
{
p = strstr(p, sOld); //搜索匹配片段Match
if ( p != NULL ) //如果找到一个Match
{
nMatch++; //计数
p += nOldLen; //搜索指针指向这个Match之后
}
else //如果再也找不到
{
break; //搜索结束
}
}
//计算目标字符串长度
signed nDestLen = (signed) (strlen(sSrc)) + nMatch * nDiff;
assert ( nDestLen >= 0 );
//分配空间
char * pDestMem = (char *) malloc(nDestLen+1);
if ( pDestMem == NULL )
{
return NULL;
}
//分段拷贝
char * pDest = pDestMem;
char * pSrc = sSrc;
for(;;)
{
char * pMatch = strstr(pSrc, sOld); //搜索匹配片段Match
if ( pMatch != NULL )
{
size_t nInterLen = pMatch - pSrc; //相邻Match间的部分Inter的长度
if ( nInterLen > 0 )
{
memcpy(pDest, pSrc, nInterLen); //拷贝Inter
pDest += nInterLen; //拷贝宿指针指向Inter之后
}
memcpy(pDest, sNew, nNewLen); //拷贝sNew,为提高效率,此处不用 strcat()
pDest += nNewLen; //拷贝宿指针指向sNew之后
pSrc = pMatch + nOldLen; //拷贝源指针指向sOld之后
}
else
{
break;
}
}
strcpy(pDest, pSrc); //拷贝最后一个Match后的一段,可能只是一个null-terminator,也可能是整个sSrc
//返回结果
return pDestMem;
}
#3
//ReplaceString() 替换字符串的片段(此版本要搜索两次字符串,速度不快,但内存消耗最少)
//copyleft by xingweiwei(alex.xing@163.com, http://b7156.xici.net)
//1999-05-06
//sSrc - 待替换字符串
//sOld - 旧“片段”
//sNew - 新“片段”
//char * - 返回新字符串,记得用完后用 free() 释放
char * ReplaceString(const char * sSrc, const char * sOld, const char * sNew)
{
//计算 sOld 与 sNew 长度差
size_t nOldLen = strlen(sOld);
size_t nNewLen = strlen(sNew);
signed nDiff = (signed) (nNewLen) - (signed) (nOldLen);
//搜索统计 pOldStr 中有多少个 sOld
int nMatch = 0;
for(char * p = sSrc;;)
{
p = strstr(p, sOld); //搜索匹配片段Match
if ( p != NULL ) //如果找到一个Match
{
nMatch++; //计数
p += nOldLen; //搜索指针指向这个Match之后
}
else //如果再也找不到
{
break; //搜索结束
}
}
//计算目标字符串长度
signed nDestLen = (signed) (strlen(sSrc)) + nMatch * nDiff;
assert ( nDestLen >= 0 );
//分配空间
char * pDestMem = (char *) malloc(nDestLen+1);
if ( pDestMem == NULL )
{
return NULL;
}
//分段拷贝
char * pDest = pDestMem;
char * pSrc = sSrc;
for(;;)
{
char * pMatch = strstr(pSrc, sOld); //搜索匹配片段Match
if ( pMatch != NULL )
{
size_t nInterLen = pMatch - pSrc; //相邻Match间的部分Inter的长度
if ( nInterLen > 0 )
{
memcpy(pDest, pSrc, nInterLen); //拷贝Inter
pDest += nInterLen; //拷贝宿指针指向Inter之后
}
memcpy(pDest, sNew, nNewLen); //拷贝sNew,为提高效率,此处不用 strcat()
pDest += nNewLen; //拷贝宿指针指向sNew之后
pSrc = pMatch + nOldLen; //拷贝源指针指向sOld之后
}
else
{
break;
}
}
strcpy(pDest, pSrc); //拷贝最后一个Match后的一段,可能只是一个null-terminator,也可能是整个sSrc
//返回结果
return pDestMem;
}
//copyleft by xingweiwei(alex.xing@163.com, http://b7156.xici.net)
//1999-05-06
//sSrc - 待替换字符串
//sOld - 旧“片段”
//sNew - 新“片段”
//char * - 返回新字符串,记得用完后用 free() 释放
char * ReplaceString(const char * sSrc, const char * sOld, const char * sNew)
{
//计算 sOld 与 sNew 长度差
size_t nOldLen = strlen(sOld);
size_t nNewLen = strlen(sNew);
signed nDiff = (signed) (nNewLen) - (signed) (nOldLen);
//搜索统计 pOldStr 中有多少个 sOld
int nMatch = 0;
for(char * p = sSrc;;)
{
p = strstr(p, sOld); //搜索匹配片段Match
if ( p != NULL ) //如果找到一个Match
{
nMatch++; //计数
p += nOldLen; //搜索指针指向这个Match之后
}
else //如果再也找不到
{
break; //搜索结束
}
}
//计算目标字符串长度
signed nDestLen = (signed) (strlen(sSrc)) + nMatch * nDiff;
assert ( nDestLen >= 0 );
//分配空间
char * pDestMem = (char *) malloc(nDestLen+1);
if ( pDestMem == NULL )
{
return NULL;
}
//分段拷贝
char * pDest = pDestMem;
char * pSrc = sSrc;
for(;;)
{
char * pMatch = strstr(pSrc, sOld); //搜索匹配片段Match
if ( pMatch != NULL )
{
size_t nInterLen = pMatch - pSrc; //相邻Match间的部分Inter的长度
if ( nInterLen > 0 )
{
memcpy(pDest, pSrc, nInterLen); //拷贝Inter
pDest += nInterLen; //拷贝宿指针指向Inter之后
}
memcpy(pDest, sNew, nNewLen); //拷贝sNew,为提高效率,此处不用 strcat()
pDest += nNewLen; //拷贝宿指针指向sNew之后
pSrc = pMatch + nOldLen; //拷贝源指针指向sOld之后
}
else
{
break;
}
}
strcpy(pDest, pSrc); //拷贝最后一个Match后的一段,可能只是一个null-terminator,也可能是整个sSrc
//返回结果
return pDestMem;
}
#4
这是C语言(C/C++编译器)的任意字符串的替换函数,该函数“扫描”了两遍字符串:第一遍统计匹配个数,以计算目标字符串长度,精确分配内存;第二遍扫描完成替换。如果只扫描一遍,要么分配一块固定的“足够”大的内存(如果你处理的都是“短”字符串,可以这么做),要么建立一个临时数据结构保存扫描信息,总之要多占内存。
#5
那!我来介绍用C++得general algorithm吧!
#include <algorithm>
#include <string>
#include <vector>
using namespace std;
char oldchar="/";
char newchar="//";
char *a="C;\windows\system";
vector<string> vec(a,a+17);
replace(vec.begin(),vec.end(),oldchar,newchar); //这样newchar 就替换
//oldchar了
#include <algorithm>
#include <string>
#include <vector>
using namespace std;
char oldchar="/";
char newchar="//";
char *a="C;\windows\system";
vector<string> vec(a,a+17);
replace(vec.begin(),vec.end(),oldchar,newchar); //这样newchar 就替换
//oldchar了
#6
自已动手编写一个不也很有趣吗?
#7
C++ 中有 replace() 吗?
#8
C++ 中有 replace() 吗?
#9
CString::Replace
#10
kwok_1980(Mars):
char oldchar="/";
char newchar="//";
好象不对吧,再仔细检查一下
这个问题不是一个字符换成另一个字符那么简单:一个字符可能换成几个字符,长度变了。如果字符换字符,我一个循环替换就搞定了,用得着那么麻烦吗?
for (i = 0; i < n; i++)
if (str[i] == oldchar)
str[i] = newchar;
char oldchar="/";
char newchar="//";
好象不对吧,再仔细检查一下
这个问题不是一个字符换成另一个字符那么简单:一个字符可能换成几个字符,长度变了。如果字符换字符,我一个循环替换就搞定了,用得着那么麻烦吗?
for (i = 0; i < n; i++)
if (str[i] == oldchar)
str[i] = newchar;
#11
to kwok_1980(Mars) :
vector<string> vec(a,a+17); 什么意思,谢谢!!
vector<string> vec(a,a+17); 什么意思,谢谢!!
#12
#include <vector> 报错
我用的是 TC++3
我用的是 TC++3
#13
没有人了吗???
#14
vector<string> vec(a,a+17); 就是初始化变量vec!vec[0],vec[1],vec[2]....vec[16],用起来跟一般的数组差不多
其实vector<string>就相当与一个char类型的数组,但,它是一个class vector
用起来比平时的char a[]灵活好用!它是动态的!
其实vector<string>就相当与一个char类型的数组,但,它是一个class vector
用起来比平时的char a[]灵活好用!它是动态的!
#15
>>>>C++ 中有 replace() 吗?
C++中当然有此函啦!#include <algorithm>
希望你在VC或DEV--C++中编译!
TC3.0不支持最新的C++ Standard
C++中当然有此函啦!#include <algorithm>
希望你在VC或DEV--C++中编译!
TC3.0不支持最新的C++ Standard
#16
C++标准模板库中的string对次支持的很好,你的TC3.0肯定支持不了的,可以
用VC6或者是BC5.5都能支持。
#include <string>
#include <iostream>
using namespace std;
int main()
{
string str("your string");
str.replace('\', "\\");
cout << str << endl;
}
用VC6或者是BC5.5都能支持。
#include <string>
#include <iostream>
using namespace std;
int main()
{
string str("your string");
str.replace('\', "\\");
cout << str << endl;
}
#17
主要是我的程序必须在 DOS 下运行,用 VC 可以吗?
#18
我的那个程序可以,DOS、UNIX都可以(必须用C++编译器)
#19
我来学习一下
#20
#1
如果是用标准C++的话,你可以用泛型算法中的replace函数,它支持在string等容器中替换.
#2
//ReplaceString() 替换字符串的片段(此版本要搜索两次字符串,速度不快,但内存消耗最少)
//copyleft by xingweiwei(alex.xing@163.com, http://b7156.xici.net)
//1999-05-06
//sSrc - 待替换字符串
//sOld - 旧“片段”
//sNew - 新“片段”
//char * - 返回新字符串,记得用完后用 free() 释放
char * ReplaceString(const char * sSrc, const char * sOld, const char * sNew)
{
//计算 sOld 与 sNew 长度差
size_t nOldLen = strlen(sOld);
size_t nNewLen = strlen(sNew);
signed nDiff = (signed) (nNewLen) - (signed) (nOldLen);
//搜索统计 pOldStr 中有多少个 sOld
int nMatch = 0;
for(char * p = sSrc;;)
{
p = strstr(p, sOld); //搜索匹配片段Match
if ( p != NULL ) //如果找到一个Match
{
nMatch++; //计数
p += nOldLen; //搜索指针指向这个Match之后
}
else //如果再也找不到
{
break; //搜索结束
}
}
//计算目标字符串长度
signed nDestLen = (signed) (strlen(sSrc)) + nMatch * nDiff;
assert ( nDestLen >= 0 );
//分配空间
char * pDestMem = (char *) malloc(nDestLen+1);
if ( pDestMem == NULL )
{
return NULL;
}
//分段拷贝
char * pDest = pDestMem;
char * pSrc = sSrc;
for(;;)
{
char * pMatch = strstr(pSrc, sOld); //搜索匹配片段Match
if ( pMatch != NULL )
{
size_t nInterLen = pMatch - pSrc; //相邻Match间的部分Inter的长度
if ( nInterLen > 0 )
{
memcpy(pDest, pSrc, nInterLen); //拷贝Inter
pDest += nInterLen; //拷贝宿指针指向Inter之后
}
memcpy(pDest, sNew, nNewLen); //拷贝sNew,为提高效率,此处不用 strcat()
pDest += nNewLen; //拷贝宿指针指向sNew之后
pSrc = pMatch + nOldLen; //拷贝源指针指向sOld之后
}
else
{
break;
}
}
strcpy(pDest, pSrc); //拷贝最后一个Match后的一段,可能只是一个null-terminator,也可能是整个sSrc
//返回结果
return pDestMem;
}
//copyleft by xingweiwei(alex.xing@163.com, http://b7156.xici.net)
//1999-05-06
//sSrc - 待替换字符串
//sOld - 旧“片段”
//sNew - 新“片段”
//char * - 返回新字符串,记得用完后用 free() 释放
char * ReplaceString(const char * sSrc, const char * sOld, const char * sNew)
{
//计算 sOld 与 sNew 长度差
size_t nOldLen = strlen(sOld);
size_t nNewLen = strlen(sNew);
signed nDiff = (signed) (nNewLen) - (signed) (nOldLen);
//搜索统计 pOldStr 中有多少个 sOld
int nMatch = 0;
for(char * p = sSrc;;)
{
p = strstr(p, sOld); //搜索匹配片段Match
if ( p != NULL ) //如果找到一个Match
{
nMatch++; //计数
p += nOldLen; //搜索指针指向这个Match之后
}
else //如果再也找不到
{
break; //搜索结束
}
}
//计算目标字符串长度
signed nDestLen = (signed) (strlen(sSrc)) + nMatch * nDiff;
assert ( nDestLen >= 0 );
//分配空间
char * pDestMem = (char *) malloc(nDestLen+1);
if ( pDestMem == NULL )
{
return NULL;
}
//分段拷贝
char * pDest = pDestMem;
char * pSrc = sSrc;
for(;;)
{
char * pMatch = strstr(pSrc, sOld); //搜索匹配片段Match
if ( pMatch != NULL )
{
size_t nInterLen = pMatch - pSrc; //相邻Match间的部分Inter的长度
if ( nInterLen > 0 )
{
memcpy(pDest, pSrc, nInterLen); //拷贝Inter
pDest += nInterLen; //拷贝宿指针指向Inter之后
}
memcpy(pDest, sNew, nNewLen); //拷贝sNew,为提高效率,此处不用 strcat()
pDest += nNewLen; //拷贝宿指针指向sNew之后
pSrc = pMatch + nOldLen; //拷贝源指针指向sOld之后
}
else
{
break;
}
}
strcpy(pDest, pSrc); //拷贝最后一个Match后的一段,可能只是一个null-terminator,也可能是整个sSrc
//返回结果
return pDestMem;
}
#3
//ReplaceString() 替换字符串的片段(此版本要搜索两次字符串,速度不快,但内存消耗最少)
//copyleft by xingweiwei(alex.xing@163.com, http://b7156.xici.net)
//1999-05-06
//sSrc - 待替换字符串
//sOld - 旧“片段”
//sNew - 新“片段”
//char * - 返回新字符串,记得用完后用 free() 释放
char * ReplaceString(const char * sSrc, const char * sOld, const char * sNew)
{
//计算 sOld 与 sNew 长度差
size_t nOldLen = strlen(sOld);
size_t nNewLen = strlen(sNew);
signed nDiff = (signed) (nNewLen) - (signed) (nOldLen);
//搜索统计 pOldStr 中有多少个 sOld
int nMatch = 0;
for(char * p = sSrc;;)
{
p = strstr(p, sOld); //搜索匹配片段Match
if ( p != NULL ) //如果找到一个Match
{
nMatch++; //计数
p += nOldLen; //搜索指针指向这个Match之后
}
else //如果再也找不到
{
break; //搜索结束
}
}
//计算目标字符串长度
signed nDestLen = (signed) (strlen(sSrc)) + nMatch * nDiff;
assert ( nDestLen >= 0 );
//分配空间
char * pDestMem = (char *) malloc(nDestLen+1);
if ( pDestMem == NULL )
{
return NULL;
}
//分段拷贝
char * pDest = pDestMem;
char * pSrc = sSrc;
for(;;)
{
char * pMatch = strstr(pSrc, sOld); //搜索匹配片段Match
if ( pMatch != NULL )
{
size_t nInterLen = pMatch - pSrc; //相邻Match间的部分Inter的长度
if ( nInterLen > 0 )
{
memcpy(pDest, pSrc, nInterLen); //拷贝Inter
pDest += nInterLen; //拷贝宿指针指向Inter之后
}
memcpy(pDest, sNew, nNewLen); //拷贝sNew,为提高效率,此处不用 strcat()
pDest += nNewLen; //拷贝宿指针指向sNew之后
pSrc = pMatch + nOldLen; //拷贝源指针指向sOld之后
}
else
{
break;
}
}
strcpy(pDest, pSrc); //拷贝最后一个Match后的一段,可能只是一个null-terminator,也可能是整个sSrc
//返回结果
return pDestMem;
}
//copyleft by xingweiwei(alex.xing@163.com, http://b7156.xici.net)
//1999-05-06
//sSrc - 待替换字符串
//sOld - 旧“片段”
//sNew - 新“片段”
//char * - 返回新字符串,记得用完后用 free() 释放
char * ReplaceString(const char * sSrc, const char * sOld, const char * sNew)
{
//计算 sOld 与 sNew 长度差
size_t nOldLen = strlen(sOld);
size_t nNewLen = strlen(sNew);
signed nDiff = (signed) (nNewLen) - (signed) (nOldLen);
//搜索统计 pOldStr 中有多少个 sOld
int nMatch = 0;
for(char * p = sSrc;;)
{
p = strstr(p, sOld); //搜索匹配片段Match
if ( p != NULL ) //如果找到一个Match
{
nMatch++; //计数
p += nOldLen; //搜索指针指向这个Match之后
}
else //如果再也找不到
{
break; //搜索结束
}
}
//计算目标字符串长度
signed nDestLen = (signed) (strlen(sSrc)) + nMatch * nDiff;
assert ( nDestLen >= 0 );
//分配空间
char * pDestMem = (char *) malloc(nDestLen+1);
if ( pDestMem == NULL )
{
return NULL;
}
//分段拷贝
char * pDest = pDestMem;
char * pSrc = sSrc;
for(;;)
{
char * pMatch = strstr(pSrc, sOld); //搜索匹配片段Match
if ( pMatch != NULL )
{
size_t nInterLen = pMatch - pSrc; //相邻Match间的部分Inter的长度
if ( nInterLen > 0 )
{
memcpy(pDest, pSrc, nInterLen); //拷贝Inter
pDest += nInterLen; //拷贝宿指针指向Inter之后
}
memcpy(pDest, sNew, nNewLen); //拷贝sNew,为提高效率,此处不用 strcat()
pDest += nNewLen; //拷贝宿指针指向sNew之后
pSrc = pMatch + nOldLen; //拷贝源指针指向sOld之后
}
else
{
break;
}
}
strcpy(pDest, pSrc); //拷贝最后一个Match后的一段,可能只是一个null-terminator,也可能是整个sSrc
//返回结果
return pDestMem;
}
#4
这是C语言(C/C++编译器)的任意字符串的替换函数,该函数“扫描”了两遍字符串:第一遍统计匹配个数,以计算目标字符串长度,精确分配内存;第二遍扫描完成替换。如果只扫描一遍,要么分配一块固定的“足够”大的内存(如果你处理的都是“短”字符串,可以这么做),要么建立一个临时数据结构保存扫描信息,总之要多占内存。
#5
那!我来介绍用C++得general algorithm吧!
#include <algorithm>
#include <string>
#include <vector>
using namespace std;
char oldchar="/";
char newchar="//";
char *a="C;\windows\system";
vector<string> vec(a,a+17);
replace(vec.begin(),vec.end(),oldchar,newchar); //这样newchar 就替换
//oldchar了
#include <algorithm>
#include <string>
#include <vector>
using namespace std;
char oldchar="/";
char newchar="//";
char *a="C;\windows\system";
vector<string> vec(a,a+17);
replace(vec.begin(),vec.end(),oldchar,newchar); //这样newchar 就替换
//oldchar了
#6
自已动手编写一个不也很有趣吗?
#7
C++ 中有 replace() 吗?
#8
C++ 中有 replace() 吗?
#9
CString::Replace
#10
kwok_1980(Mars):
char oldchar="/";
char newchar="//";
好象不对吧,再仔细检查一下
这个问题不是一个字符换成另一个字符那么简单:一个字符可能换成几个字符,长度变了。如果字符换字符,我一个循环替换就搞定了,用得着那么麻烦吗?
for (i = 0; i < n; i++)
if (str[i] == oldchar)
str[i] = newchar;
char oldchar="/";
char newchar="//";
好象不对吧,再仔细检查一下
这个问题不是一个字符换成另一个字符那么简单:一个字符可能换成几个字符,长度变了。如果字符换字符,我一个循环替换就搞定了,用得着那么麻烦吗?
for (i = 0; i < n; i++)
if (str[i] == oldchar)
str[i] = newchar;
#11
to kwok_1980(Mars) :
vector<string> vec(a,a+17); 什么意思,谢谢!!
vector<string> vec(a,a+17); 什么意思,谢谢!!
#12
#include <vector> 报错
我用的是 TC++3
我用的是 TC++3
#13
没有人了吗???
#14
vector<string> vec(a,a+17); 就是初始化变量vec!vec[0],vec[1],vec[2]....vec[16],用起来跟一般的数组差不多
其实vector<string>就相当与一个char类型的数组,但,它是一个class vector
用起来比平时的char a[]灵活好用!它是动态的!
其实vector<string>就相当与一个char类型的数组,但,它是一个class vector
用起来比平时的char a[]灵活好用!它是动态的!
#15
>>>>C++ 中有 replace() 吗?
C++中当然有此函啦!#include <algorithm>
希望你在VC或DEV--C++中编译!
TC3.0不支持最新的C++ Standard
C++中当然有此函啦!#include <algorithm>
希望你在VC或DEV--C++中编译!
TC3.0不支持最新的C++ Standard
#16
C++标准模板库中的string对次支持的很好,你的TC3.0肯定支持不了的,可以
用VC6或者是BC5.5都能支持。
#include <string>
#include <iostream>
using namespace std;
int main()
{
string str("your string");
str.replace('\', "\\");
cout << str << endl;
}
用VC6或者是BC5.5都能支持。
#include <string>
#include <iostream>
using namespace std;
int main()
{
string str("your string");
str.replace('\', "\\");
cout << str << endl;
}
#17
主要是我的程序必须在 DOS 下运行,用 VC 可以吗?
#18
我的那个程序可以,DOS、UNIX都可以(必须用C++编译器)
#19
我来学习一下