2014-02-12 480 views
1

我正在編寫一個簡單的程序,該程序將給定的學生姓名分配給所需要的任何間隔的組。目前,我關注的是讀取學生姓名的功能。 下面是代碼:在C++中將兩個字符串合併成一個變量

class student 
{ 
public: 
    string nameFirst; 
    string nameLast; 
}; 

student typeName() 
{ 
    student foo; 
    cout << "Type in a student's first name: "; 
    cin >> foo.nameFirst; 
    cout << "Type in that student's last name: "; 
    cin >> foo.nameLast; 
    cout << "\n"; 
    return foo; 
} 

既然不能使用getline(),我不得不創建兩個字符串,一個是學生的全名的每個部分。我怎樣才能重寫這段代碼,讓它在不創建兩個變量的情況下取得全名而不使用getline()?或者,如果不可能,我怎樣才能在課堂上使用一種方法將兩個字符串合併爲一個?

+2

怎麼樣'foo.name = foo.nameFirst + 「」 + foo.nameLast' – woolstar

+0

使用''>>你有,解析停止時是空白遇到,所以任何帶空格的名字都會被截斷。如果你不在乎,那麼你可以用'nameFirst +''+ nameLast'將單詞重新組合成一個名字。否則,您可能想要使用例如'get()'讀入一個字符數組,直到遇到換行符爲止(對'getline()'的模擬很差,所以你可以處理像「Von Muellerhoff」這樣的姓。更一般地,要學習'std :: string'可以看到http://en.cppreference.com/w/cpp/string/basic_string –

+0

還有迭代器:'foo.name.assign(istreambuf_iterator (cin.rdbuf()),istreambuf_iterator ()); '(當然與首選的'std :: getline()相同)。 – 0x499602D2

回答

3

你可以使用

cin >> foo.nameFirst >> foo.nameLast; 

cin >>將在空格解析停止,所以你可以輸入在一行中的全名由空間分割像James Bond

要兩個字符串合併爲一個:

string fullName = foo.nameFirst + " " + foo.nameLast; 
相關問題