【问题标题】:error: conversion from 'const char [10]' to non-scalar type 'std::fstream {aka std::basic_fstream<char>}' requested错误:请求从“const char [10]”转换为非标量类型“std::fstream {aka std::basic_fstream<char>}”
【发布时间】:2014-12-20 19:03:11
【问题描述】:

我正在尝试导入一个测试 JSON 文件并对其进行解析。我不断收到错误的数据类型。 如何加载“const char”友好文件?

代码:

#include "include/rapidjson/document.h"
#include <iostream>
#include <cstring>
#include <string>
#include <fstream>

using namespace std;
using namespace rapidjson;

int main(void){

        //std::ofstream outfile ("test.json");
        std::fstream file = ("test.json");

        for (int n=0; n<100; ++n)
        {
                file << n;


                Document document;
                document.Parse(file);

                assert(document.HasMember("hello"));
                assert(document["hello"].IsString());
                printf("hello = %s\n", document["hello"].GetString());

                outfile.flush();
                //outfile.close();

        }
}

错误:

error: conversion from 'const char [10]' to non-scalar type 'std::fstream {aka std::basic_fstream<char>}' requested

【问题讨论】:

    标签: c++ json c++11 serialization


    【解决方案1】:

    试试

    std::fstream file("test.json");
    

    至于这个

    document.Parse(file);
    

    Document::Parse() 采用 const char*,而您正试图传递 fstream。也许您可以改用ParseStream()。或者从文件中读取所有内容并将其传递给Parse()。

    【讨论】:

    • 类似错误 -> jsonTest.cpp:21:22: 错误:从 'std::fstream {aka std::basic_fstream}' 到 'const Ch* {又名 const char*}' [-fpermissive]
    • @user3766148 可能document.Parse() 需要一个字符缓冲区,而不是std::fstream。
    猜你喜欢
    • 2021-09-16
    • 2020-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-10
    • 1970-01-01
    • 1970-01-01
    • 2020-07-14
    相关资源
    最近更新 更多