替换字符串问题.

global_boy 2003-11-25 03:24:21
char ia[100]="this is a boy.";

===============================

如何把ia中的boy改成test?

最好是给写成个函数.

3q.
...全文
141 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
Wolf0403 2004-01-05
  • 打赏
  • 举报
回复
给楼主写几个函数玩玩啦。。。先一个匹配查找字符串的函数

unsigned FindStr(const char * _str, const char * _str2find)
{ // find _str2find in _str, return the offset (-1 for not found)
const char * p_orig = _str;
const char * p_orig2find = _str2find;
for (unsigned rt = 0; _str[rt] != NULL; ++rt)
{
if (_str[rt] != *_str2find)
continue;
for(unsigned i = 0; true; ++i)
{
if (_str[rt + i] == NULL) return rt;
if (_str[rt + i] != _str2find[i]) break;
}
}
return static_cast<unsigned>(-1);
}
Yssss1980 2004-01-05
  • 打赏
  • 举报
回复
正则表达式,可能能使用得上
teshufu 2004-01-05
  • 打赏
  • 举报
回复
我如何把字符串
str1="数据接口凭证文件(*.OPL;*.CSV)"
str2="*.OPL;*.CSV"
str3="所有文件(*.*)"
str4="*.*"

连接成:
str="数据接口凭证文件(*.OPL;*.CSV)\0*.OPL;*.CSV\0所有文件(*.*)\0*.*\0"

注意\0为字符串结尾标示,str长度为29,也就是第一个\0的位置。

我使用"\0"连接的话,得到字符串为,str="数据接口凭证文件(*.OPL;*.CSV)*.OPL;*.CSV所有文件(*.*)*.*"
我使用"\\0"连接的话,得到字符串为,str="数据接口凭证文件(*.OPL;*.CSV)\0*.OPL;*.CSV\0所有文件(*.*)\0*.*\0"
但是\0为两个字符了。请问各位,我该怎样连接?

最开始的问题是把字符串
A="数据接口凭证文件(*.OPL;*.CSV)|*.OPL;*.CSV|所有文件(*.*)|*.*|"转换为
B="数据接口凭证文件(*.OPL;*.CSV)\0*.OPL;*.CSV\0所有文件(*.*)\0*.*\0"
其中\0为字符串结尾标示。
Jacode 2003-12-29
  • 打赏
  • 举报
回复
如果仅仅是把char ia[100]="this is a boy.";中的中的boy改成test难度不大,但如果要写成一个函数的话,意味着这个函数还会在其他情况下使用,这就要检查一下原数组(ia)的长度能不能装下替换后的目标串。如果要求动态扩充原数组(ia)的长度以适合目标串的话,难度更大点
mfkrgxa 2003-12-29
  • 打赏
  • 举报
回复
上面的那个东东是用来做什么的 啊?
mexcactus 2003-12-29
  • 打赏
  • 举报
回复
memset不可以的
void memset(const char*,int,int);

mfkrgxa 2003-12-29
  • 打赏
  • 举报
回复
请教一个问题
就是我们如何读一个文件到一个二维数组啊
记住每个类型是不同的!!
有字符的有整型的
ssoonngg 2003-12-28
  • 打赏
  • 举报
回复
#include <functional>
#include <string>
#include <sstream>

int main{
using namespace std;
char ia[100]="this is a boy.";

stringstream sstream;
sstream<<ia;
string str = sstream.str();
string strRepOld ="boy";
string strRepNew = "test";
string strResult = replace(str,strRepOld,strRepNew);
}
//替换函数
std::string& replace(std::string& str, const std::string sb, const std::string sa)
{
std::string::size_type n, nb = 0;

while ((n = str.find(sb,nb)) != std::string::npos)
{
str.replace(n,sb.size(),sa);
nb = n + sa.size();
}

return str;
}

victor_cui 2003-12-26
  • 打赏
  • 举报
回复
int main ()
{
char str[] ="Text Files(*.txt)|*.txt|";
char * pch;
pch = strstr (str,"|");
*pch = '\0';
///strncpy (pch,"\\0",1);
puts (str);
return 0;
}
teshufu 2003-12-26
  • 打赏
  • 举报
回复
请问我如何能把“|”替换成“\0”?

int main ()
{
char str[] ="Text Files(*.txt)|*.txt|";
char * pch;
pch = strstr (str,"|");
strncpy (pch,"\\0",1);
puts (str);
return 0;
}

结果str 的“|”被替换成“\”,替换不了“\0”,请问我的问题出现在那里呢?
grooving 2003-12-22
  • 打赏
  • 举报
回复
三颗星还称作:“C++初学者”楼主真是谦虚!


jimsleon 2003-12-22
  • 打赏
  • 举报
回复
strXXX()那一系列函数足以解决这个问题了
如果要支持Unicode就是用_tcsXXXX()那一系列宏
huruiduan1983 2003-12-21
  • 打赏
  • 举报
回复
memset
flyelf 2003-11-25
  • 打赏
  • 举报
回复
string::replace
HostOOP 2003-11-25
  • 打赏
  • 举报
回复
老大,你都3颗星了,还问这个问题?
我当然不是说这个问题就简单得不用动手了。比如,在实际的运用中要考率大文件、文件中有非ASCCII字符等问题,但也不是什么难事,如果仅仅就是将ia中的boy替换成test更是简单。

24,857

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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