使用RapidJson凝结JSON文件后,如何将输出存储在C 字符串中



如何将读取器的输出存储在C 字符串中,而不是在stdout

中打印

请帮助我找出字符串中的存储输出。

// JSON condenser example
// This example parses JSON text from stdin with validation, 
// and re-output the JSON content to stdout without whitespace.
#include "rapidjson/reader.h"    
#include "rapidjson/writer.h"   
#include "rapidjson/filereadstream.h"   
#include "rapidjson/filewritestream.h"   
#include "rapidjson/error/en.h"     
using namespace rapidjson;   
int main(int, char*[]) {   
    // Prepare JSON reader and input stream.   
    Reader reader;   
    char readBuffer[65536];   
    FileReadStream is(stdin, readBuffer, sizeof(readBuffer));   
    // Prepare JSON writer and output stream. 
    char writeBuffer[65536];    
    FileWriteStream os(stdout, writeBuffer, 
  sizeof(writeBuffer));    
    Writer<FileWriteStream> writer(os);    
    // JSON reader parse from the input stream and let writer generate the output.   
if (!reader.Parse(is, writer)) {       
        fprintf(stderr, "nError(%u): %sn",    static_cast<unsigned>(reader.GetErrorOffset()),    GetParseError_En(reader.GetParseErrorCode()));   
        return 1;  
    }  
//this should work something like
string str = reader.Parse(is, writer);
//no stdout from reader**      
cout<< str <<endl;
//this output will contain json file without whitespaces      
    return 0;       
}

url:http://rapidjson.org/

改编自Rapidjson文档

#include <iostream>
#include <string>
#include "rapidjson/document.h" 
#include "rapidjson/stringbuffer.h"
#include "rapidjson/writer.h"
#include "rapidjson/istreamwrapper.h"
#include "rapidjson/ostreamwrapper.h"
using namespace rapidjson;
int main()
{
    Document d;
  // Read from cin
    IStreamWrapper isw(std::cin);
    d.ParseStream(isw);
  // Write to a char * buffer
    StringBuffer buffer;
    Writer<StringBuffer> writer(buffer);
    d.Accept(writer);
  // Use the buffer
    std::string theJSON(buffer.getString());
  // Write to cout
    OStreamWrapper osw(std::cout)
    d.Accept(osw);
}

最新更新