아래의 코드를 컴파일하려고했습니다 (https://stackoverflow.com/a/478960/683218). 컴파일 내가mingw : -std = C++로 컴파일 할 때 함수를 찾을 수 없습니다. 11
$ g++ test.cpp
컴파일하면, OK 갔다하지만 -std=c++11
스위치를 사용할 때 잘못된 :
$ g++ -std=c++11 test.cpp
test.cpp: In function 'std::string exec(char*)':
test.cpp:6:32: error: 'popen' was not declared in this scope
FILE* pipe = popen(cmd, "r");
^
어떤 생각이 무슨 일이야?
(나는 mingw.org에서 mingw32 gcc4.8.1를 사용하고, 그리고 WindowsXP64에)
코드 :
#include <string>
#include <iostream>
#include <stdio.h>
std::string exec(char* cmd) {
FILE* pipe = popen(cmd, "r");
if (!pipe) return "ERROR";
char buffer[128];
std::string result = "";
while(!feof(pipe)) {
if(fgets(buffer, 128, pipe) != NULL)
result += buffer;
}
pclose(pipe);
return result;
}
int main() {}
관련없는,하지만 예상대로', 그것은 작동하지 않습니다 동안'하지 않는다 (무엇이 일어 났는지를 결정하기 위해 feof (...)!이) 그것까지. 왜냐하면'EOF' 플래그는 파일 끝에서부터 읽기를 시도 할 때까지 설정되지 않기 때문에, 한 번에 여러 번 반복 할 것입니다. 대신에 당신의 경우'while (fgets (...)! = 0)'을 수행하면됩니다. 이것은 C++ 스트림에서도 읽을 때와 동일합니다. –