怎么把一个string存到字符数组里?

yangmijun 2006-08-19 07:02:32
问题1:如果有一个string,比如就是"abcdeabcd",我想把这个串存到字符数组里去,怎么做比较好?

问题2:另外如果要对这个串进行如下替换操作:

1.从左至右查找字符d,
2.找到d后判断d的左边是不是c,右边是不是e,如果满足,则将d替换成X

这样,上面的字符串"abcdeabcd"中有两个d,但只有第一个d满足条件,所以结果应该是"abcXeabcd",
而不应该是"abcXeabcX",我能想到的就是先把字符串存到字符数组里,然后用循环+指针来完成,然后再存回字符串,但不知道有没有不用字符数组就能做到的函数或方法?
...全文
731 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhangxuyu1118 2006-08-21
  • 打赏
  • 举报
回复 1
mark
Fin_Soul 2006-08-21
  • 打赏
  • 举报
回复
const char *a = str.c_str();
//
会多一个’/0‘,data()才是王道!
  • 打赏
  • 举报
回复
路过~~
cunsh 2006-08-20
  • 打赏
  • 举报
回复

找到一个函数
void string_replace(string & strBig, const string & strsrc, const string &strdst) {
string::size_type pos=0;
string::size_type srclen=strsrc.size();
string::size_type dstlen=strdst.size();
while( (pos=strBig.find(strsrc, pos)) != string::npos){
strBig.replace(pos, srclen, strdst);
pos += dstlen;
}
}


使用:
string s = "abcdeabcdecd";
string_replace(s,"cde", "cXe");
cunsh 2006-08-20
  • 打赏
  • 举报
回复

s.c_str() 楼上正解.
vector可以用 &v[0] 得到的指针当数组用.
但string不能&s[0]得到的指针当c字符数组来用. string里字符存储的不保证是连续的.也不保证是以'\0'结尾的.

<<Effective STL>>条款16: 如何将vector和string的数据传给遗留的API
rollor_phoe 2006-08-20
  • 打赏
  • 举报
回复
问题1:如果有一个string,比如就是"abcdeabcd",我想把这个串存到字符数组里去,怎么做比较好?
------------------------------------------------------
string str("abcdeabcd");
const char *a = str.c_str();
cout<<a;
jixingzhong 2006-08-19
  • 打赏
  • 举报
回复
用一个指针指向这个 string,
然后就把这个指针当作数组用吧 ...
lj860603 2006-08-19
  • 打赏
  • 举报
回复
,但不知道有没有不用字符数组就能做到的函数或方法?
================
原来楼主是要实现这样的目的才把字符串存到数组里啊 ...
那根本不用数组 ...

//code...
char *ptr = NULL;
if (!(ptr=(char *)malloc(100))) exit (1);
strcpy(ptr, "abcdeabcd");

while (*ptr)
{
if (*ptr == 'c' && *(ptr+1) == 'd' && *(ptr+2) == 'e')
{
*++ptr = 'X';
}
++ptr;
}
free(ptr);
//code...
lj860603 2006-08-19
  • 打赏
  • 举报
回复
问题2:

//code...

int i = 1;
while (str[i])
{
if (str[i-1] == 'c' && str[i] == 'd' && str[i+1] == 'e')
{
str[i] = 'X';
}
}
//code...
lj860603 2006-08-19
  • 打赏
  • 举报
回复
问题1:如果有一个string,比如就是"abcdeabcd",我想把这个串存到字符数组里去,怎么做比较好?
==========================
//...
char *ptr = "abcdeabcd";
char str[30];
for (int i = 0; str[i++] = *ptr++; )
;
//code...

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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