2016-07-18 20 views
-1

我有一個簡單的腳本來回顯數據,我想將數據傳輸到其他程序。從C++的管道獲取連續輸入

例如

#!/bin/bash 

echo "1st line of data" 
sleep $(($RANDOM % 10)) 
echo "2nd line of data" 
sleep $(($RANDOM % 10)) 
echo "3rd line of data" 
sleep $(($RANDOM % 10)) 
echo "4th line of data" 
sleep $(($RANDOM % 10)) 
echo "5th line of data" 
sleep $(($RANDOM % 10)) 
echo "6th line of data" 
sleep $(($RANDOM % 10)) 
echo "7th line of data" 
sleep $(($RANDOM % 10)) 
echo "8th line of data" 

然後

sh echo_data.sh | ./parse_data 

我如何獲得在C++中的數據?

+0

您從標準輸入流,又名'std :: cin'或'stdin'中讀取數據。 –

回答

1

你可以從stdin得到它。

std::string line; 
while (std::getline(std::cin, line)) { 
    // parse line 
} 
+0

該腳本僅在和示例中。我有一個程序不停止迴應,直到它不停止。如果你的代碼沒有收回任何數據,它將停止循環,我需要保持循環運行。 我應該這樣做嗎? \t而(真){ \t \t如果(標準::函數getline(標準:: CIN,線)){ \t \t \t //解析線 \t \t} \t} – FFY00

+0

,循環終止,只有當它讀取EOF,或者遇到一些錯誤。如果它沒有收到任何數據,程序只是在那裏阻塞,等待'stdin'的輸入。 –

+0

所以它只在'echo_data.sh'關閉時纔會停止? – FFY00