2014-12-15 19 views
6

Mam plik konfiguracyjny o następującej treści:JsonCpp Pisanie z powrotem do pliku Json

{ 
    "ip": "127.0.0.1", 
    "heartbeat": "1", 
    "ssl": "False", 
    "log_severity": "debug", 
    "port":"9999" 
}  

użyłem JsonCpp do odczytywania zawartości powyżej pliku konfiguracyjnym. Odczytywanie zawartości pliku konfiguracyjnego działa dobrze, ale zapisywanie zawartości w pliku konfiguracyjnym kończy się niepowodzeniem. Mam następujący kod:

#include <json/json.h> 
#include <json/writer.h> 
#include <iostream> 
#include <fstream> 
int main() 
{ 
    Json::Value root; // will contains the root value after parsing. 
    Json::Reader reader; 
    Json::StyledStreamWriter writer; 
    std::ifstream test("C://SomeFolder//lpa.config"); 
    bool parsingSuccessful = reader.parse(test, root); 
    if (!parsingSuccessful) 
    { 
     // report to the user the failure and their locations in the document. 
     std::cout << "Failed to parse configuration: "<< reader.getFormattedErrorMessages(); 
    } 
    std::cout << root["heartbeat"] << std::endl; 
    std::cout << root << std::endl; 
    root["heartbeat"] = "60"; 
    std::ofstream test1("C://SomeFolder//lpa.config"); 
    writer.write(test1,root); 
    std::cout << root << std::endl; 
    return 0; 
} 

Kod drukuje prawidłowe wyjście konsoli, jednak plik konfiguracyjny jest pusty, gdy ten kod jest wykonywany. Jak sprawić, by ten kod działał?

+0

Co się stanie, jeśli explicite zamkniesz() testowy strumień wejściowy? –

+0

Zamknięcie pliku działało. Tak głupio ode mnie: P. Czy potrafisz napisać odpowiedź, abym mógł ją zaakceptować, aby inni wiedzieli właściwą odpowiedź? – Pant

+0

zrobione, "przeniesiłem" komentarz podpowiedzi do odpowiedzi. –

Odpowiedz

5

Wszystko, co musisz zrobić, to wyraźnie zamykania strumienia wejściowego

test.close(); // ADD THIS LINE 
std::ofstream test1("C://LogPointAgent//lpa.config"); 
writer.write(test1,root); 
std::cout << root << std::endl; 
return 0; 
+2

test1.close() też działa. – Pant

2

Wszystko, co musisz zrobić, to zamknąć otwarty plik.

test1.close();

Powiązane problemy