2012-04-17 15 views
-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か文字列にスペースが含まれていませんか?

+5

stooooooooooooooooop downvoting –

+3

なぜダウン投票? – Nick

+0

リンチ暴徒(または羊の束)のように聞こえる – Nick

答えて

3

質問をした人は、へのposの引数が[0, length)の範囲にある必要があると考えていた可能性があります。これは、標準21.3.6.3/2から、しかし、そうではありません。

戻り値:XPOS機能はXPOSのために、このような値を決定することができます。 それ以外の場合は、nposを返します。

+0

それは良いです、私はこのルールを知っていなかったかもしれない、あまりにも、downvotingの代わりに、それはそのようなルールを投稿する方が良いです、非常にありがとう –

+0

+1あなたは正しく、私は(間違って)パラメータはエラーとみなされました。 –

0

マイナーなバグがあります。利用可能な入力がない可能性があります。戻り値getline(cin,text);をチェックしていません。これは起こりそうもない。あなたは持っている必要があります。入力リダイレクションと空の入力ファイル。

関連する問題