C++的popen()
在執行一個進程後返回一個包含輸出的文件描述符。而不是FILE *,我需要一個char *,即。一個字符串是我的輸出。我該怎麼辦?請幫幫我。將C++ popen()的輸出轉換爲字符串
回答
我想我會做一些事情這個一般順序:
char big_buffer[BIG_SIZE];
char small_buffer[LINE_SIZE];
unsigned used = 0;
big_buffer[0] = '\0'; // initialize the big buffer to an empty string
// read a line data from the child program
while (fgets(small_buffer, LINE_SIZE, your_pipe)) {
// check that it'll fit:
size_t len = strlen(small_buffer);
if (used + len >= BIG_SIZE)
break;
// and add it to the big buffer if it fits
strcat(big_buffer, small_buffer);
used += strlen(small_buffer);
}
如果你想獲得更詳細的,你可以動態地分配空間,並嘗試在必要時提高其保持輸出量你得到。除非你至少有一些關於孩子能產出多少產出的想法,否則這將是一條更好的路線。
編輯:既然你在使用C++,具有動態大小的結果其實是很容易的:
char line[line_size];
std::string result;
while (fgets(line, line_size, your_pipe))
result += line;
爲什麼不使用'std :: string'作爲最終結果並使用'append'? –
@KerrekSB:主要是因爲我以某種方式認爲它被標記爲C而不是C++。 –
使用通常的stdio
例程將FILE*
的輸出讀取爲字符串。
感謝您的回覆。你能否提供一個示例代碼...... !!! –
見https://stackoverflow.com/a/10702464/981959
你可以做到這一點兩線(三級包括的typedef提高可讀性):
#include <pstream.h>
#include <string>
#include <iterator>
int main()
{
redi::ipstream proc("./some_command");
typedef std::istreambuf_iterator<char> iter;
std::string output(iter(proc.rdbuf()), iter());
}
這將負責所有內存分配,並在完成後關閉流。
- 1. 將ReadProcessMemory輸出轉換爲字符串
- 2. C#將字符串轉換爲字節並作爲字符串輸出
- 3. C#將Console.Writeline輸出轉換爲電子郵件的字符串
- 4. C++奇怪的輸出將字符串轉換爲int
- 5. 將Redis輸出字符串轉換爲位字符串
- 6. Java:將Gzip字符串轉換爲輸出字符串
- 7. C++ - 將字符串轉換爲字符
- 8. C將字符串/字符輸入轉換爲浮點數
- 9. 如何將控制檯輸出的字符轉換爲字符串; C++
- 10. C#將字符串轉換爲數字
- 11. 從POPEN輸出轉換爲數組
- 12. C:將atoi()的輸出轉換爲無符號字符?
- 13. 如何將Objective-C字符串轉換爲C字符串?
- 14. 將字符串轉換爲位圖c#
- 15. C#將字符串轉換爲uint
- 16. C++將char轉換爲字符串
- 17. C#將Unicode轉換爲字符串
- 18. c#將字符串轉換爲變量
- 19. 將字符串轉換爲日期C++
- 20. 將字符串轉換爲System.guid c#
- 21. 將字符串轉換爲int在C++
- 22. 將字符串轉換爲smtpclient在c#
- 23. 將字符串轉換爲總和C#
- 24. C++ ::將ASCII值轉換爲字符串
- 25. 將C#貨幣轉換爲字符串
- 26. C:將int []轉換爲字符串
- 27. C#,將字符串轉換爲DateTimeOffset
- 28. 將字符串轉換爲long long C?
- 29. 將float轉換爲字符串c
- 30. C#:將字符串轉換爲DBType.AnsiStringFixedLength
看一看此主題: http://stackoverflow.com/questions/478898/how-to-execute-a-command-and-get-output-of-command-within-c 祝你好運! – DCMaxxx