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的用法还不太熟悉,情大家指教,感激
呀!!!!

...全文
416 5 打赏 收藏 举报
写回复
5 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
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;

}
  • 打赏
  • 举报
回复
相关推荐
发帖
C语言
加入

6.6w+

社区成员

C语言相关问题讨论
社区管理员
  • C语言
  • 小灸舞
申请成为版主
帖子事件
创建了帖子
2003-10-07 11:51
社区公告
暂无公告