【发布时间】:2009-06-30 06:02:48
【问题描述】:
我很难在 C++ 中使用 std::string::iterators。这段代码在 Dev-C++ 中编译得很好(仍然没有得到正确的输出,但这是我的错:TODO,修复算法),而且我没有遇到运行时错误。错误出现在 Visual Studio Express 2008 C++ 中,我收到指向
我的调试告诉我,我可能试图取消引用超过句子输入的结尾,但我看不到在哪里。有人能解释一下吗?
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;
}
【问题讨论】:
标签: c++ iterator dereference