2012-02-27 14 views
4
#include<iostream.h> 
#include<conio.h> 
class String 
{ 
    char str[100]; 
    public: 
    void input() 
    { 
     cout<<"Enter string :"; 
     cin>>str; 
    } 

    void display() 
    { 
     cout<<str; 
    } 
}; 

int main() 
{ 
    String s; 
    s.input(); 
    s.display(); 
    return 0; 
} 

私はTurbo C++ 4.5で作業しています。コードが細かい実行されているが、そのは、例えばのために所望の出力 を与えていない私は、「スティーブ・ホーキング」のみ「スティーブ」として入力を与えた場合に表示されています。誰でも助けてくれますか?C++「cin」は最初の単語のみを読み取る

+0

ライン 'CIN << str'もコンパイルされません。なぜこのタグが 'c'と' java'ですか? – interjay

+1

20歳のIDEを使用しているのはなぜですか?よりコンパイラ(NetBeans、Eclipse、Visual Studio Expressなど)を備えた、より多くの最新の無料IDEがあります。 –

答えて

17

は、一度に1つの単語を読み込みます。 char配列に行全体を読むには:あなたは、文字列を実装する方法を学んだ後、

cin.getline(str, sizeof str); 

もちろん、あなたはstd::stringを使用して

getline(cin, str); 

としてそれを読まなければならないこともあることでしょうこの世紀からコンパイラを手に入れることは非常に良いアイデアです。あなたの年齢は15歳以上で、C++はそれ以来大幅に変化しました。 Visual Studio Expressは、Windows用のフリーコンパイラが必要な場合に適しています。他のコンパイラも利用できます。

2
cin>>str; 

これは、次のトークンだけを読み込みます。 C++のiostreamでは、トークンは空白で区切られているので、最初の単語が得られます。

あなたは、おそらく文字列に行全体を読み込みgetlineを、欲しい:ストリーム上の>>を使用して

getline(cin, str); 
+0

どのように出力全体として文章を取得するには? – rick

+1

これは 'cin >> str'ではなく 'cin << str'です。 – collinjsimpson

2

あなたは使用することができます。

cin.read(str, sizeof(str)); 
をしかし、これはバッファをいっぱいになります。 MikeSeymourが

+1

'read'はバッファ全体を埋めるでしょう。行の終わりまで 'getline'を読みたいとします。 –

+0

あなたはそうです、それはバッファ全体を満たすでしょう。 – roymustang86

+1

'std :: noskipws'はあなたが暗示することをしません。これは、最初の空白にのみ影響し、終了する空白には影響しません。 –

1

を示唆して代わりに、あなたはあなたが全体のラインを読むためにcin.getlineを使用することができcin.getLine()を使用する必要があります。

0

使用この

cin.getline(cin, str); 
関連する問題