如何在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): %s\n", 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;
}
答案 0 :(得分:1)
#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);
}