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); 就行了。
[解决办法]