小编Iva*_*vic的帖子

我如何检测除了整数之外的任何东西是否被传递给我的类构造函数?

公平而简单:如何检查除整数之外的其他任何内容是否已在 C++ 中传递给我的类?

如果我通过 fe achar 'a'我的班级会得到编号97以 ascii 形式。

我试过了,std::numeric_limits但我不明白为什么它没有检测整数:

#include <iostream>
#include <limits>

class integerCheck
{
public:
    integerCheck(int value)
    {
       if((value != std::numeric_limits<int>::is_integer))
           return;

       std::cout << value << std::endl;
    }
};

int main()
{
    integerCheck valInt(88);
    integerCheck valChar('a');
    integerCheck valFloat(13.44f);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我发现这篇文章std::enable_if可以使用,但我无法想象即使在 c++20 中也无法检测到错误的输入,而是将所有内容都包装在模板中。

我错过了什么,我应该寻找/搜索什么来检测除整数值之外的任何东西? 预先感谢

c++ oop int numeric-limits c++20

9
推荐指数
2
解决办法
166
查看次数

具有全局定义变量的递归比没有全局定义变量的递归函数获得更多堆栈。为什么?(跳入C++)

我正在学习 C++ 以及来自 Alex Allain 的“Jumping into C++”的其他书籍,并且正在学习递归。有一个程序示例可以计算出我的计算机可以处理多少递归,直到出现“堆栈溢出错误”或在我的情况下出现“分段错误”。

在使用给定的示例代码之前,我编写了一个简短的程序来测试它,它表明我的代码可以处理比给定的示例代码多一倍的递归。我的问题:为什么会这样,因为它几乎是相同的模式 - 一个函数调用自身并迭代一个整数。

  1. 为什么在出现错误之前要进行两倍以上的递归?在我的理解中,两种算法都使用了相同数量的堆栈,并且在我的理解中它们应该或多或少地使用相同的数量。

第二,为什么会出现分段错误而不是堆栈溢出?

我真的很想了解 C++ 编程,并希望能够编写使用少量系统资源的“廉价”程序,这确实是必要的。

我的代码:

#include <iostream>
using namespace std;


int i = 1;

void recurse ()
{

    i = i + 1;
    cout << "number: " << i << endl;

    recurse();
}

int main()
{
    recurse();
}

Run Code Online (Sandbox Code Playgroud)

本书中的代码示例:

#include <iostream>

using namespace std;


void recurse(int count)
{
    cout << count << endl;
    recurse(count + 1);
}

int main()
{
    recurse(1);
}
Run Code Online (Sandbox Code Playgroud)

我的输出: 我系统上两个示例的输出屏幕截图,以查看我所指的差异

使用编译器 Linux g++ -std=c++17 …

c++ recursion function

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

关于如何读取、写入和打印 QJson 代码的最小示例(使用 QJsonDocument、QJsonArray、QJsonObject、QFile)

我正在寻找一个最小的完整可执行 qt 或 c++ 代码示例来解析和编写此 Json 代码:

{
    "FirstName": "John",
    "LastName": "Doe",
    "MiddleName": null,
    "Age": 43,

    "Address": {
        "Street": "Downing Street 10",
        "City": "London",
        "Country": "Great Britain"
    },
    "Phone numbers": [
        "+44 1234567",
        "+44 2345678"
    ]
    "Valid":true,
}
Run Code Online (Sandbox Code Playgroud)
  • 上面的示例由一个具有 5 个键/值对的对象组成。其中两个值是字符串,一个是数字,
  • 一个是另一个对象,最后一个是数组。
  • 有效的 JSON 文档可以是数组或对象,因此文档始终以方括号或大括号开头。

编辑:

  • Json 还有2 个键/值对 - 值 'null' 和 'bool'

是的,我看过一个“保存游戏示例” 并试图弄清楚。

但是将近一周后,我放弃了将一个没有枚举、QVectors 和 3 个不同头文件的最小示例转移到我的项目来处理代码片段。无论是用于小部件还是核心代码都无关紧要。

我已经成功地完成了一个 xml 读写程序,但似乎我错过了一些重要的点,并且在 json 中出现错误,这些错误可能与解析有关,也可能无关。如果没有最小的完全工作的代码示例,我无法排除它。

所以我的问题是:您能否提供一个最小的示例来编写、读取和打印 Json 文件?先谢谢了。

c++ qt json

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

标签 统计

c++ ×3

c++20 ×1

function ×1

int ×1

json ×1

numeric-limits ×1

oop ×1

qt ×1

recursion ×1