string中的iterator怎么用?

root4soso 2003-10-07 11:51:35
比如说我有两个字符串str1,str2,str1=“hello world",str2为空,我分别取str1_beg=str1.begi()
,str2_beg=str2.begin(),str1_end=str1.end(),然后我用一个循环
while(str1_beg!=str1_end){
*str2_beg=*str1_beg;
str2_beg++;
}
*str2_beg='\0';
cout<<str2<<endl;
但是我为什么得到的str2还是一个空字符串?我对C++中的string的用法还不太熟悉,情大家指教,感激
呀!!!!

...全文
479 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
root4soso 2003-10-07
  • 打赏
  • 举报
回复
多谢大家!(str1_beg++确实忘了加上,纯粹手误^_^)
我本来是要写一个XML文件的分析器(学了C++,总想用一下),昨天晚上开始第一步,本想写一个函数把程序中的路径改一下(就是把'\'改成'\\'),没想到遇到这么多得麻烦,一个iterator用的这么不爽:<
point_to 2003-10-07
  • 打赏
  • 举报
回复
上面写得很好!
确实忘了加str1_beg++ ;
还有就是str2的空间可以变通一下给予!
Wolf0403 2003-10-07
  • 打赏
  • 举报
回复
看着呢就被插。。。^_^
小封装一下,可以不必给 str2 留空间了。

void CopyString(string& str2, const string& str1)
{
str2.resize(str1.length());
string::const_iterator str1_beg=str1.begin();
string::const_iterator str1_end=str1.end();
string::iterator str2_beg=str2.begin();
while(str1_beg!=str1_end){
*str2_beg=*str1_beg;
str2_beg++;
str1_beg++;
}
*str2_beg='\0';
cout<<str2<<endl;
}
Wolf0403 2003-10-07
  • 打赏
  • 举报
回复
单步调试看看?
要复制 string 直接用 str2 = str1; 好了啦,何必自己写?
感觉你忘记把 str1_beg++ 了。
point_to 2003-10-07
  • 打赏
  • 举报
回复
void main()
{
string str1,str2=" ";//str2要占有内存,否则就不可赋值*str2_beg=*str1_beg;
str1="hello world";
string::iterator str1_beg=str1.begin();
string::iterator str1_end=str1.end();
string::iterator str2_beg=str2.begin();
while(str1_beg!=str1_end){
*str2_beg=*str1_beg;
str2_beg++;
str1_beg++;
}
*str2_beg='\0';
cout<<str2<<endl;

}

70,020

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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