2012-10-16 62 views
2

我想讓用戶輸入並在屏幕上輸出它。 我想,讓用戶鍵入他們需要什麼樣類型的像O型例如,但我的輸出didnt捕獲我的Ø,只是我類型,所以是有它的方式捕獲類型內的整條線?我想用戶輸入並將其輸出到我的shell環境中

我的代碼的示例輸出。

輸入孫類型:K型

輸入行星:10

已輸入孫型:

沒有行星的:10

這只是我整個冗長代碼的一部分。

#include <iostream> 
#include <string> 
#include <sstream> 

using namespace std; 

class LocationData 
{ 
    private: 
    string sunType; 
    int noOfEarthLikePlanets; 
    int noOfEarthLikeMoons; 
    float aveParticulateDensity; 
    float avePlasmaDensity; 
    public: 

}; 
int main() 
{ 
    int i; 
    string s; 
    LocationData test; 
    cout<<"Enter Sun Type: "; 
    cin>>s; 
    test.setSunType(s); 
    cin.clear(); 
    cin.ignore(10000,'\n'); 
    cout<<"Enter planets: "; 
    cin>>i; 
    test.setNoOfEarthLikePlanets(i); 
    cout<<"Sun type that was entered: "<<test.getSunType(); 
    out<<"\nNo of Planets: "<<test.getNoOfEarthLikePlanets()<<endl; 
} 

回答

2

getline(cin, s); 

讀一整行並將該行進入s變量。當你發現

cin >> s; 

讀取只差一個字,這就是爲什麼它類型和Ø之間停在空間。

+0

THX:d和想請問我需要閱讀的字符串和下一個輸入後清除我的線是一個詮釋?就像我在我的代碼 –

+0

中的主要問題那樣,這是您通常需要注意的另一種方式。當你先讀取一個int並且隨後讀取一行時,因爲讀取一個int不會刪除以下換行符。 – john

-1

嘗試使用gets()/getline()函數。 cincout默認情況下忽略空格。我不知道如何讓他們接受空白。但有了上述功能,您將獲得您想要的結果。

參考:gets()getline()

+0

'gets()'沒有提供任何限制輸入長度的方法 - 這是一個被「Internet蠕蟲」利用的漏洞 - 因此應該避免它的使用。改用'fgets()'。 – David

相關問題