我尝试以下操作时:
system( "ifconfig -a | grep inet | "
"sed 's/\\([ ]*[^ ]*\\)\\([ ]*[^ ]*\\).*$/\\1 \\2/' "
" > address.txt" ) ;
我在文件中获取输出。如何将输出分配给变量。
答案 0 :(得分:1)
stdin
的命令输出。该MSDN页面上有示例代码。
原始努力:
一个选项是使用tmpnam_s
创建临时文件,在那里写输出而不是硬编码文件名,然后将其从文件中读回std::string
,删除临时文件完成后立即归档。基于MSDN示例代码:
#include <stdio.h>
#include <stdlib.h>
#include <fstream>
#include <sstream>
int main( void )
{
char name1[L_tmpnam_s];
errno_t err;
err = tmpnam_s( name1, L_tmpnam_s );
if (err)
{
printf("Error occurred creating unique filename.\n");
exit(1);
}
stringstream command;
command << "ifconfig -a | grep inet | " <<
"sed 's/\\([ ]*[^ ]*\\)\\([ ]*[^ ]*\\).*$/\\1 \\2/' " <<
" > " << (const char*)name1;
system(command.str().c_str());
{
ifstream resultFile((const char*)name1);
string resultStr;
resultFile >> resultStr;
cout << resultStr;
}
::remove(name1);
}
此代码比平常使用CRT更多,但您似乎有一种您希望使用的方法依赖于此。