这里是代码的短片段,它测试给定字符串中是否有空格
#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?或者字符串不包含任何空格?我必须考虑哪种情况?
答案 0 :(得分:3)
提出问题的人可能认为pos
的{{1}}参数必须在find
范围内。但是,从标准21.3.6.3/2开始并非如此:
如果函数可以为xpos确定这样的值,则返回:xpos。 否则,返回npos。
答案 1 :(得分:0)
有一个小错误。可能没有可用的输入。您没有检查getline(cin,text);
的返回值。这不太可能发生;你需要有例如输入重定向和空输入文件。