小编O'N*_*eil的帖子

如何使用XmlSerializer类反序列化这个简单的xml配置?

我有以下xml我想反序列化成一个类

<?xml version="1.0" encoding="utf-8" ?>
<root>
  <element1>String1</element1>
  <element2>String2</element2>
</root>
Run Code Online (Sandbox Code Playgroud)

我正在尝试将其序列化为以下类:

    [XmlRoot("root")]
    public class root
    {
        [XmlElement("element1")]
        internal string element1 { get; set; }

        [XmlElement("element2")]
        internal string element2 { get; set; }
    }
Run Code Online (Sandbox Code Playgroud)

当我尝试使用以下代码反序列化它时,实例化配置对象,但字符串为空.

     using (TextReader reader = new StreamReader(configFile))
        {
            XmlSerializer serializer = new XmlSerializer(typeof(root));
            this.config = (root)serializer.Deserialize(reader);
        }
Run Code Online (Sandbox Code Playgroud)

我尝试使用xsd.exe创建一个xsd,然后创建一个基于此的类,但该工具生成的杂乱太多.我想我离这儿很近.我错过了什么?

xml xml-serialization xsd.exe

0
推荐指数
2
解决办法
2090
查看次数

如何正确使用可变参数函数

我写了以下代码:

#include <stdarg.h>
#include <stdio.h>

double average(int count, ...)
{
    va_list ap;
    int j;
    double sum = 0;

    va_start(ap, count); /* Requires the last fixed parameter (to get the address) */
    for (j = 0; j < count; j++) {
        sum += va_arg(ap, double); /* Increments ap to the next argument. */
    }
    va_end(ap);

    return sum / count;
}

int main(){
  int count = 3;
  double result = average(count, 10, 20, 20);
  printf("result = %f\n", result);
}
Run Code Online (Sandbox Code Playgroud)

我的目的是计算参数总和的平均值(第一个参数除外,它是参数的数量).但打印值为0.00000.代码有什么问题?

c

0
推荐指数
1
解决办法
42
查看次数

如何在c ++中返回自己的结构?

我在创建一个返回我自己的struct的函数时遇到了麻烦.

标题:

    #ifndef FOOD_H
    #define FOOD_H
    #include <string>

    class Food
    {
    public:
        Food();
        ~Food();
    public:
        struct Fruit {
            std::string name;

        };
        struct Person {
            Fruit favorite;
            Fruit setFavorite(Fruit newFav);
        };

    public:
        Fruit apple;
        Fruit banana;

        Person Fred;
    };
    #endif
Run Code Online (Sandbox Code Playgroud)

CPP:

    #include "Food.h"

    Food::Food()
    {
    }

    Food::~Food()
    {
    }

    Fruit Food::Person::setFavorite(Fruit newFav)
    {
        return newFav;
    }
Run Code Online (Sandbox Code Playgroud)

主要:

    #include "Food.h"
    #include <iostream>

    int main() {
        Food fd;    
        fd.Fred.favorite = fd.Fred.setFavorite(fd.apple);
        std::cout << fd.Fred.favorite.name;
        system("pause");
    }
Run Code Online (Sandbox Code Playgroud)

我的错误是:

E0020标识符"Fruit"未定义Food.cpp 11

E0147声明与"Food :: Fruit Food …

c++ struct return function visual-studio-2017

0
推荐指数
1
解决办法
109
查看次数

开关盒总是显示默认情况

好的,这是一个两部分问题,我试图最好地解释我的疑问:

代码很简单,用户不断输入等级,程序保持计数,一旦用户给出EOF条目,程序最后显示每个等级的最终计数.

1)当我运行代码时,程序正确跟踪我放入的每个等级的计数,但总是落到默认情况下,即使输入正确!为什么会这样?

2)所以我不完全确定"cin.get()"是如何工作的,但是如果我是对的,它会接受用户输入的第一个字符.在这里,我将'grade'作为整数变量,因为它是教科书所做的,我试图理解为什么他这样做.由于grade是一个整数变量,并且我最终将字符值作为输入,我事先检查了我输入的字符的值最终被存储为其ASCII值.然而,即使我把字符放在我的开关盒中,程序仍然设法保持工作 - >即使grade有一个整数值(ASCII一个),它在技术上与'A','a'进行比较, 'B'等等.所以我的问题是,为什么代码仍然有效?

#include<iostream>
using namespace std;

void main()
{

    int grade;
    unsigned int countA=0;
    unsigned int countB=0;
    unsigned int countC=0;


    cout << "Keep entering Grades, or EOF to Quit: ";

    while ((grade=cin.get()) != EOF)
    {
        switch (grade)
        {
            case 'A':
            case 'a':
                ++countA;
                break;

            case 'B':
            case 'b':
                ++countB;
                break;

            case 'C':
            case 'c':
                ++countC;
                break;

            default:
                cout << "Wrong Entry";
                cout << endl;
                break;
        }
    }

    cout << "A count: " << countA << …
Run Code Online (Sandbox Code Playgroud)

c++ cin switch-statement

0
推荐指数
1
解决办法
98
查看次数

为什么QJsonValue :: toDouble中存在精度损失?

我想在以后存储一个doubleQJsonObject并检索相同的值.但是,检索到的值的精度较低.

这是一个例子:

qDebug() << QJsonObject({{"number", 49.195502187}}).value("number").toDouble();
Run Code Online (Sandbox Code Playgroud)

输出49.1955,而不是49.195502187.

我已经检查了为什么qjsonvalue todouble转换导致数据丢失?,但它是关于数据类型之间的转换,与我的具体情况无关.

如何检索正确的值?

c++ qt json

0
推荐指数
1
解决办法
221
查看次数