我很难在 C++ 中使用 std::string::iterators 。这段代码在 Dev-C++ 中编译得很好(仍然没有得到正确的输出,但这是我的错:TODO,修复算法),并且我没有得到运行时错误。错误出现在 Visual Studio Express 2008 C++ 中,我收到指向 <xstring> 的错误:“Expression: string iterator not dereferencable”,并指向 <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;
}