2014-01-22 83 views
1

我在寫一個執行shell命令的C++程序。我正在使用popen()函數來運行這些命令。我希望我的exec函數返回std::string,但我不知道如何從FILE讀取字符串。有沒有辦法做到這一點,而不先讀入char[],然後將其轉換爲字符串?如果有很多是最有效的?C++讀入管道字符串

+1

不,沒有辦法直接從'FILE'流讀入'std :: string'。 –

+0

@JoachimPileborg所以最好的解決方案是將其讀入'char *',然後將其轉換爲'std :: string'? – 735Tesla

+1

是,或者是逐字符讀取(例如'fgetc')並追加到字符串。 –

回答

1

這是不可能的。 popen()函數返回指向FILE的指針。您無法直接從FILE讀取std::string。但是,您可以將char*轉換爲std::string,這似乎是您的案例中的最佳解決方案。

-3

這聽起來像您可以使用std::ifstream - >http://www.cplusplus.com/doc/tutorial/files/

+0

當所有的OP都是'FILE *'時,這將如何工作? –

+0

我必須錯過一些東西。 OP說他有一個他想要讀入字符串的文件。這個'FILE *'從哪裏來的? – MerrillFraz

+0

OP使用['popen'](http://man7.org/linux/man-pages/man3/popen.3.html)能夠讀取正在執行的程序的輸出。 'popen'函數返回一個'FILE *'。 OP還提到他/她不知道如何從'FILE'(由'popen'返回的)讀入一個字符串。 –