2014-10-25 2 views
2

libcurl을 사용하여 직렬화 된 코드를 다운로드하고 열 수 있지만 fstream이 누락 된 것처럼 보이는 오류가 발생하지만 대단히 많이 포함되어 있습니다. 주변을 둘러 보았지만 오류는 거의 발생하지 않았습니다. 다음은 오류 및 코드입니다. 무엇이 그리웠습니까?오류 : 'ios_base'가 선언되지 않았습니다.

컴파일 오류 출력

g++ -g testGetprice2.cpp -o testGetprice2.o -std=gnu++11 -lcurl 
testGetprice2.cpp: In function 'int getData()': 
testGetprice2.cpp:45:56: error: 'ios_base' has not been declared 
testGetprice2.cpp:45:72: error: 'ios_base' has not been declared 

코드 :

#include "rapidjson/include/rapidjson/document.h" 
#include <iostream> 
#include <fstream> 
#include <stdio.h> 
#include <curl/curl.h> 
#include <unistd.h> 
#include <unordered_map> 
#include <string> 

using namespace rapidjson; 

struct myData 
{ 
     std::fstream *file; 
     std::string *str; 
}; 

size_t write_data(void *ptr, size_t size, size_t nmemb, myData *data) 
{ 
     size_t numBytes = size * nmemb; 

     if (data->file) 
       data->file->write((char*)ptr, numBytes); 

     if (data->str) 
       *data->str += std::string((char*)ptr, numBytes); 

     return numBytes; 
} 

//function to get coin data and perform analysis 
int getData() 
{ 
     int count = 0; 

    //begin non terminating loop 
     while(true) 
     { 
       count++; 
       CURL *curl = curl_easy_init(); 
       if (curl) 
       { 
         curl_easy_setopt(curl, CURLOPT_URL, "http://pubapi.cryptsy.com/api.php?method=singlemarketdata&marketid=155"); 

         std::fstream file("/home/coinz/cryptsy/myfile.txt", ios_base::out | ios_base::ate); 
         std::string json; 

         myData data; 
         data.file = &file; 
         data.str = &json; 

         curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, &write_data); 
         curl_easy_setopt(curl, CURLOPT_WRITEDATA, &data); 

         /* Perform the request, res will get the return code */ 
         CURLcode res = curl_easy_perform(curl); 

         /* Check for errors */ 
         if (res != CURLE_OK) 
         { 
           std::cerr << "curl_easy_perform() failed: " << curl_easy_strerror(res) << std::endl; 
         } 
         else 
         { 
           file << std::endl; 

           //begin deserialization 
           Document document; 
           document.Parse(json.c_str()); 
           assert(document.HasMember("lasttradeprice")); 
           assert(document["hello"].IsString()); 
           std::cout << "The Last Traded Price is = " << document["lasttradeprice"].GetString() << std::endl; 
         } 

         /* always cleanup */ 
         curl_easy_cleanup(curl); 
       } 

       //timer for URL request. *ADUJST ME AS DESIRED* 
       usleep(10000000); 
     } 

     return 0; 
} 

//Le Main 
int main(void) 
{ 
    getData(); 
} 

답변

4

ios_base 네임 스페이스 std입니다. ios_base 앞에 접두사 std::을 추가하십시오.

관련 문제