我在寫一個執行shell命令的C++程序。我正在使用popen()
函數來運行這些命令。我希望我的exec
函數返回std::string
,但我不知道如何從FILE
讀取字符串。有沒有辦法做到這一點,而不先讀入char[]
,然後將其轉換爲字符串?如果有很多是最有效的?C++讀入管道字符串
回答
這是不可能的。 popen()
函數返回指向FILE
的指針。您無法直接從FILE
讀取std::string
。但是,您可以將char*
轉換爲std::string
,這似乎是您的案例中的最佳解決方案。
這聽起來像您可以使用std::ifstream
- >http://www.cplusplus.com/doc/tutorial/files/
當所有的OP都是'FILE *'時,這將如何工作? –
我必須錯過一些東西。 OP說他有一個他想要讀入字符串的文件。這個'FILE *'從哪裏來的? – MerrillFraz
OP使用['popen'](http://man7.org/linux/man-pages/man3/popen.3.html)能夠讀取正在執行的程序的輸出。 'popen'函數返回一個'FILE *'。 OP還提到他/她不知道如何從'FILE'(由'popen'返回的)讀入一個字符串。 –
- 1. 使用管道讀取字符串數組C使用C
- 2. 從C中的管道讀取字符
- 3. C++管道字符串郵件命令
- 4. 將字符串寫入管道
- 5. 寫字符到管道C
- 6. 如何通過管道讀取器獲取管道數據字符串
- 7. C++將txt讀入字符串錯誤
- 8. 在C中讀取/寫入UNIX管道
- 9. 將非常量C字符串讀入字符串類
- 10. parse5 SAXParser:管道轉換爲可讀的流轉換字符串
- 11. 包含'OR'管道的RegEx與輸入字符串中的管道匹配
- 12. 爲什麼從Mac OSX管道(2)讀取(2)將0x7F插入字符串?
- 13. C++字符數組不正確通過管道讀取
- 14. 雙管道字符存在時在管道上的字符串標記化
- 15. 從管道讀取C
- 16. C++字符/字符串讀取問題
- 17. 將字符串插入字符串C#
- 18. 閱讀字符串輸入
- 19. Swift - 讀取管道輸入
- 20. 閱讀管道輸入
- 21. jenkins管道中提取字符串(groovy)
- 22. 帶字符串的管道系統
- 23. 創建管道分隔字符串
- 24. gstreamer-0.10打印管道字符串
- 25. Powershell的管道在字符串
- 26. Angular 2動態字符串與管道
- 27. jenkins管道def新字符串參數
- 28. C:將字符串文件讀入字符數組*
- 29. C++ stringstream將固定長度字符串讀入字符數組
- 30. 使用管道運行c程序,如何在終端輸入字符串?
不,沒有辦法直接從'FILE'流讀入'std :: string'。 –
@JoachimPileborg所以最好的解決方案是將其讀入'char *',然後將其轉換爲'std :: string'? – 735Tesla
是,或者是逐字符讀取(例如'fgetc')並追加到字符串。 –