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);
}
あなたがより精巧な取得したい場合は、動的に領域を割り当て、および出力の量を保持するために、必要に応じて、それを増やすしようとする可能性がありあなたは得る。子供がどのくらいのアウトプットを生み出すかについて少なくともいくらか考えなければ、それはより良いルートになるでしょう。
編集:
char line[line_size];
std::string result;
while (fgets(line, line_size, your_pipe))
result += line;
最終結果に 'std :: string'を使い、' append'を使うのはなぜでしょうか? –
@KerrekSB:主に私は何とかC++ではなくCとしてタグ付けされていると思っていたからです。 –
通常のstdio
ルーチンを使用して、FILE*
の出力を文字列に変換します。
返信いただきありがとうございます。あなたはサンプルコードを提供してください... !!! –
がへのtypedefを含むhttps://stackoverflow.com/a/10702464/981959
次の2つのラインでそれを行うことができます(3を参照してください:あなたがCを使用していることを考えると++、動的なサイズの結果は、実際にはかなり簡単です。可読性を向上させます)。
#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. ファイルへのpopen()の出力
- 2. コンソールの文字列への出力
- 3. JavaのJTextAreaへの配列の出力文字列
- 4. Pythonの文字列リテラル内popenのコマンド
- 5. jaxbの出力文字列
- 6. char * C#の文字列へ
- 7. C++:文字列へのポインタ
- 8. 文字列へのポインタ - C
- 9. printf文字列出力 "Dz↕" getch()C++
- 10. 文字列配列無限ループへのC++ユーザー入力
- 11. フレックスレクサーへの文字列入力
- 12. C++出力オブジェクトへの配列の出力(関数別)
- 13. 文字列からのフォーマットの出力
- 14. Cのconst文字列へのポインタ
- 15. C#のURIへの文字列操作
- 16. Preg_quote出力文字列の文字列とストリングスラッシュ
- 17. C++、文字列から文字配列への変換
- 18. Cでpopen()コマンドに文字列をパイプする方法は?
- 19. VB - dll、文字列出力
- 20. T4出力文字列
- 21. 出力の変更 - 文字列の文字の合計PHP
- 22. Cスタイルの文字列のポイントの配列へのポインタC++/cli
- 23. 文字列出力のJavascript変数?
- 24. HttpQueryInfoWの出力文字列データ
- 25. SqlCeDataReaderの出力を文字列に入れます(C#)
- 26. C#文字列への通貨
- 27. パスワード文字列への文字列
- 28. 文字列エラーへの文字列
- 29. 出力入力文字列10回JavaScript
- 30. Objective-Cの文字列から文字列を抽出する
このスレッドに見てください: http://stackoverflow.com/questions/478898/how-to-execute-a-command-and-get-output-of-command-within-c 幸運を祈る! – DCMaxxx