首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

s.assign()有关问题

2012-05-02 
s.assign()问题//每次循环处理一个单词while ((startPos sentence.find_first_not_of(separators,endPos

s.assign()问题
//每次循环处理一个单词
while ((startPos = sentence.find_first_not_of(separators,endPos)) != string::npos) //确定单词初始位置startPos
{
++count;

//确定单词结束位置endPos
endPos = sentence.find_first_of(separators,endPos);

if (endPos == string::npos)
{
wordLen = sentence.size() - startPos; //最后一个单词
}
else
{
wordLen = endPos - startPos;
}
word.assign(sentence.begin() + startPos,sentence.begin() + startPos + endPos); [color=#FF0000][/color]//获取单词




/*在获取单词时可不可以直接用 word.assign(startPos,endPos);?
 *为什么?具体的区别是什么?
 *谢谢*/



[解决办法]
assign只有这几种用法吧:
1,s.assign(s2); 用s2的副本替换s
2, s.assign(s2,pos2,len);用s2从下标pos2开始的len个字符副本替换s
3, s.assign(cp,len);用cp所指向数组的前len个字符副本替换s
4, s.assign(cp);用cp所指向的以空字符结束的字符串副本替换s
[解决办法]
assign要的是迭代器,find_first_not_of返回偏移量。

加粗那一句也不对啊, word.assign(sentence.begin() + startPos, sentence.begin() + endPos); 就行了。
[解决办法]

探讨

word.assign(sentence.begin() + startPos, sentence.begin() + startPos + wordLen);
加粗的打错了,实际他是这样的,sentence.begin() + endPos与sentence.begin() + startPos + wordLen一样吗?

热点排行