以下代码中的哪个错误?

时间:2012-04-17 07:54:54

标签: c++ string

这里是代码的短片段,它测试给定字符串中是否有空格

#include<string>
#include<iostream>
#include<cctype>
using namespace std;
//performs string operations
void string_get()
{
    string text;
    cout<<" enter string "<<endl;
    getline(cin,text);
    string::size_type position=text.find(' ');
    if(position!=string::npos)
    {
        if(text.find(' ',position+1)!=string::npos)
        {
            cout<<" contains at least two spaces "<<endl;

        }
        else
        {
            cout<<" contains less then two spaces "<<endl;

        }
            }


    else
    {

        cout<<" no spaces "<<endl;
    }

    }

int main()
{

    string_get();



    return 0;
}

当我运行此代码并输入一些字符串时,它工作正常,但有这样的问题,即它说这个代码中有错误,我被要求修复它,但我无法看到这里有哪个bug ?也许字符串是NULL?或者字符串不包含任何空格?我必须考虑哪种情况?

2 个答案:

答案 0 :(得分:3)

提出问题的人可能认为pos的{​​{1}}参数必须在find范围内。但是,从标准21.3.6.3/2开始并非如此:

  

如果函数可以为xpos确定这样的值,则返回:xpos。   否则,返回npos。

答案 1 :(得分:0)

有一个小错误。可能没有可用的输入。您没有检查getline(cin,text);的返回值。这不太可能发生;你需要有例如输入重定向和空输入文件。