天天看點

c++ 字元串的輸入方式

一般而言,可以用cin直接将輸入流入某個變量中,輸入以空格或者回車結尾。是以對于字元串而言,這樣的結果是無法将空格流入變量之中。

對應的,可以使用getline的方法,輸入一行,将空格也當作變量,而非分隔符。

對于多行的輸入,也可類似的實作:

while(getline(cin,str[num]))
	{
		num++;
	}
           

上述循環中,其傳回值是cin的狀态,即是否是有效的輸入,是以隻要是正常的輸入是無法跳出此循環的。

是以,一種方式是EOF,Windows上即為ctrl+z,Linux為ctrl+d以跳出循環。

當然還有其他的判斷方式:

while(getline(cin,str[num],'\n')&&str[num].size())
	{
		num++;
	}
           

用string的size()方法判斷輸入的字元串的長度,若長度為0則傳回0。這樣當輸入的字元串為空時會跳出循環,但就意味着必須在原來的輸入上多加上一行空的輸入。

此外,getline是在string庫中封裝的函數,常用的有兩種:

istream& getline (istream&  is, string& str, char delim);
istream& getline (istream&  is, string& str);
           

其中delim是截斷符,未指定的情況下預設為回車(‘\n’,提一句‘\n’是一個字元,長度為1),即預設情況下實作了上述的功能。自然地可以利用截斷符實作其他截斷輸入操作。

while(getline(cin,str[num],'*'))
	{
		num++;
	}
           

即以*作為分隔符輸入。