我很難在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