linux系統下怎麼輸入EOF退出輸入迴圈while(getline(cin, temp)){.....}

readyao發表於2015-12-29
我們經常會迴圈從標準輸入資料,並進行處理。有時候會用while迴圈來處理輸入,但是我們該怎麼退出該輸入迴圈?

while(getline(cin, temp))
{
	.....
}
while(cin >> temp)
{
	.....
}

參考標準庫對getline和cin的介紹: http://www.cplusplus.com/reference/string/basic_string/getline/

http://www.cplusplus.com/reference/iostream/cin/?kw=cin

當讀取到eof的時候getline/cin函式將不再讀取資料並退出while迴圈。


在windows平臺,stdin輸入流的EOF標誌是 ctrl + z。

在unix/linux平臺,stdin輸入流的EOF標誌是 ctrl + d。

例項1:

/*************************************************************************
	> File Name: 1sort_copy.cpp
	> Author: 
	> Mail: 
	> Created Time: 2015年12月29日 星期二 20時12分36秒
 ************************************************************************/

#include<iostream>
#include <algorithm>
#include <vector>
#include <string>
#include <iterator>
using namespace std;


int main()
{
    vector<string> v;
    string temp;

    while(getline(cin, temp)){
        v.push_back(temp);
    }

    sort(v.begin(), v.end());
    cout << "This is your sorted string:";
    copy(v.begin(), v.end(), ostream_iterator<string> (cout, "\n"));

    return 0;
}


例項2:

#include<iostream>
#include <algorithm>
#include <vector>
#include <string>
#include <iterator>
using namespace std;


int main()
{
    vector<string> v;
    string temp;

    while(cin >> temp){
        v.push_back(temp);
    }

    sort(v.begin(), v.end());
    cout << "This is your sorted string:";
    copy(v.begin(), v.end(), ostream_iterator<string> (cout, "\n"));

    return 0;
}


相關文章