我很难在C++中使用std :: string :: iterators。这段代码在Dev-C++中编译得很好(仍然没有得到正确的输出,但那是我的错:TODO,修复算法),并且我没有得到运行时错误。错误是在Visual Studio Express 2008 C++中,我得到一个指向< xstring>:“Expression:string iterator not derefereenable”的错误,并指向< xstring>文件的第112行。表达式:字符串迭代器不可忽略
我的调试告诉我,我可能试图解引用过去的句子输入结束,但我看不到在哪里。任何人都可以点亮一下吗?
std::string wordWrap(std::string sentence, int width)
{
std::string::iterator it = sentence.begin();
//remember how long next word is
int nextWordLength = 0;
int distanceFromWidth = width;
while (it < sentence.end())
{
while (*it != ' ' && it != sentence.end())
{
nextWordLength++;
distanceFromWidth--;
it++;
}
if (nextWordLength > distanceFromWidth)
{
*it = '\n';
distanceFromWidth = width;
nextWordLength = 0;
}
//skip the space
it++;
}
return sentence;
}
+1。我已经纠正了第2点中的代码,以使其与代码的完整代码块和解释一致。 – 2009-06-30 07:22:09