我有以下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,然后创建一个基于此的类,但该工具生成的杂乱太多.我想我离这儿很近.我错过了什么?
我写了以下代码:
#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.代码有什么问题?
我在创建一个返回我自己的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 …
好的,这是一个两部分问题,我试图最好地解释我的疑问:
代码很简单,用户不断输入等级,程序保持计数,一旦用户给出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) 我想在以后存储一个double值QJsonObject并检索相同的值.但是,检索到的值的精度较低.
这是一个例子:
qDebug() << QJsonObject({{"number", 49.195502187}}).value("number").toDouble();
Run Code Online (Sandbox Code Playgroud)
输出49.1955,而不是49.195502187.
我已经检查了为什么qjsonvalue todouble转换导致数据丢失?,但它是关于数据类型之间的转换,与我的具体情况无关.
如何检索正确的值?