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()
?或者,如果不可能,我怎樣才能在課堂上使用一種方法將兩個字符串合併爲一個?
怎麼樣'foo.name = foo.nameFirst + 「」 + foo.nameLast' – woolstar
使用''>>你有,解析停止時是空白遇到,所以任何帶空格的名字都會被截斷。如果你不在乎,那麼你可以用'nameFirst +''+ nameLast'將單詞重新組合成一個名字。否則,您可能想要使用例如'get()'讀入一個字符數組,直到遇到換行符爲止(對'getline()'的模擬很差,所以你可以處理像「Von Muellerhoff」這樣的姓。更一般地,要學習'std :: string'可以看到http://en.cppreference.com/w/cpp/string/basic_string –
還有迭代器:'foo.name.assign(istreambuf_iterator(cin.rdbuf()),istreambuf_iterator ()); '(當然與首選的'std :: getline()相同)。 –
0x499602D2