-1

这是一小段代码,用于测试给定字符串中是否有空格

#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;
}

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

4

2 回答 2

3

问这个问题的人可能认为pos论据find需要在范围内[0, length)。然而,从标准 21.3.6.3/2 来看,情况并非如此:

返回: 如果函数可以确定 xpos 的此类值,则返回 xpos。否则,返回 npos。

于 2012-04-17T08:20:55.663 回答
0

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

于 2012-10-05T12:29:18.003 回答