简单的自动换行功能最后一行问题

时间:2011-04-12 12:47:30

标签: c++ word-wrap

我有一个函数,它接受一个长字符串并分成更小的字符串并将它们添加到一个数组中,以便它们可以在一个更好看的段落中输出。它工作正常,除了最后一行不输出。我怎样才能输出?这是代码:

void WordWrap(string inputString, string formatedAr[], const int SIZE)
{
    unsigned int length;
    unsigned int index;
    unsigned int word;
    unsigned int max = 65;
    string outWord;
    string outLine;

    length = inputString.length();
    outWord = "";
    outLine = "";
    word = 0;

    for(int i = 0; i < SIZE; i++)
    {
        formatedAr[i] = "";
    }

    for(index = 0; index < length; index++)
    {
        if(inputString[index] != ' ')
        {
            outWord += inputString[index];
        }
        else
        {
            if(outLine.length() + outWord.length() > max)
            {
                formatedAr[word] = outLine;
                word++;
                outLine.clear();
            }
            outLine += outWord + " ";
            outWord.clear();
        }
    }
}

2 个答案:

答案 0 :(得分:2)

添加字符时只会写入formatedAr会使当前行太长。完成解析输入字符串后,还需要将残余写入formatedAr

formatedAr[word] = outLine;循环结束后尝试放置for

答案 1 :(得分:0)

建议:

如果我理解正确,你想把一个句子分成不同的单词,所以不要这样做:

for(index = 0; index < length; index++)
    {
        if(inputString[index] != ' ')
        {
            outWord += inputString[index];
        }

...

为什么不使用流:

string s(inputString);
istringstream iss(s);
vector<string> words;
copy (istream_iterator(iss),istream_iterator(),back_inserter(words));