Tag: C#的

将C ++类转换为JSON

我想创build一个包含我的类的实例variables的JSONstring。 例如, class Example { std::string string; std::map<std::string, std:string> map; std::vector<int> vector; }; 会成为: { "string":"the-string-value", "map": { "key1":"val1", "key2":"val2" }, "vector":[1,2,3,4] } 我已经研究过几个用于创buildJSON的C ++库,它们看起来都非常复杂。 我想要类似于Javascript的JSON.stringify(object) 。 换句话说就是传递一个std :: map到它并接收一个string。 地图可以包含其他地图,vector,列表,string,数字和布尔。 什么是最好的方法来做到这一点? 谢谢你的帮助。 编辑 我已经看了下面的内容: json精灵,jsoncpp,zoolib,JOST,CAJUN,libjson,nosjob,JsonBox,jsonme– 我理解我可以构build一个单独的JSON对象,如下面的答案,并转换为JSON我想能够存储我的东西在标准集合和转换。 编辑2 好吧,放弃序列化类的想法,因为C ++缺乏反思似乎是不可能的。 有没有一种很好的方式来转换包含std :: maps,std :: vectors,std :: lists,numbers,strings和bools的std :: map到JSON,而不必更改数据types或将数据复制到新的数据types? 谢谢。

entity framework代码第一 – 如何运行生产数据库的更新数据库

我想知道如何运行生产数据库的“更新数据库”命令。 “更新数据库”数据库在我的本地机器上工作正常,但是如何获取这个数据用于生产数据呢? 所以,如果我改变了我的应用程序,然后通过Visual Studio运行“发布”,这对于代码方面的工作很好,但是如何为生产数据运行“更新 – 数据库”命令。 希望这个问题有道理… 谢谢,

为什么**不**要声明一个函数`constexpr`?

任何由return语句组成的函数都可以声明为constexpr ,因此,如果所有参数都是constexpr并且只有constexpr函数在其主体中被调用,则可以在编译时进行评估。 是否有任何理由不宣布这样的函数constexpr ? 例: constexpr int sum(int x, int y) { return x + y; } constexpr i = 10; static_assert(sum(i, 13) == 23, "sum correct"); 任何人都可以提供一个例子,声明一个函数constexpr会有什么危害吗? 一些最初的想法: 即使不应该声明一个函数不是constexpr充分理由,我可以想象constexpr关键字具有过渡性作用:在代码中不需要编译时评估的编译器不允许编译器评估仍然要编译该代码(但是需要使用constexpr显示需要的代码时可靠地失败)。 但是我不明白:如果没有充分的理由宣布一个function不够完善的话,为什么标准库中的每一个function都没有被宣告为constexpr ? (你不能争辩说还没有完成,因为还没有足够的时间去做,因为这样做是毫不费力的 – 与决定每一个单一function是否相反)。 – – 我知道, N2976故意不要求许多标准库types(如容器)的cstrs,因为这对于可能的实现来说太过于限制。 让我们把它们排除在参数之外,只是想知道:一旦标准库中的types实际上有一个constexpr cstr,为什么不是每个函数都声明为constexpr呢? 在大多数情况下,你也不能争辩说,你可能宁愿不去声明一个函数constexpr只是因为你没有设想任何编译时间的用法:因为如果其他人evtl. 将使用你的代码,他们可能会看到你不这样使用。 (但是,当然,types特征types和东西都是可以的。) 所以我想有一个很好的理由和一个很好的例子,故意不宣布函数constexpr ? (“每一个function”,我的意思是:每一个符合被constexpr要求的函数,也就是被定义为一个单一的return语句,只带有constexprcrstypes的参数,只调用constexpr函数。 问题为什么std::forward放弃了constexpr -ness? 这是一个特例。

如何将除Web API之外的其他一切路由到/index.html

我一直在使用Web API处理ASP.NET MVC中的AngularJS项目。 除非您尝试直接转到有angular度的路由URL或刷新页面,否则它的效果很好。 而不是用服务器configuration瞎搞,我认为这将是我可以处理与MVC的路由引擎 。 目前的WebAPIConfig: public static class WebApiConfig { public static void Register(HttpConfiguration config) { // Web API routes config.MapHttpAttributeRoutes(); config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{id}", defaults: new { id = RouteParameter.Optional }, constraints: new { id = @"^[0-9]+$" } ); config.Routes.MapHttpRoute( name: "ApiWithActionAndName", routeTemplate: "api/{controller}/{action}/{name}", defaults: null, constraints: new { name = […]

C标准库和C POSIX库的区别

我被“C标准lib”和“C POSIX lib”弄糊涂了,因为我发现“C POSIX lib”中定义的许多头文件也是“C标准库”的一部分。 所以,我假设“C标准库”是由ANSI C组织定义的一个库,在不同平台(Win32 / Unix-like)上有不同的实现,而“C POSIX库”只是“C标准lib“在类似Unix的操作系统上,对吗? 但是“C POSIX lib”包含了一些未在“C标准库”中指定的头文件,如<sys/types.h> , <sys/wait.h>和<pthread.h> 。 以<pthread.h>为例,我假定它的“C标准库”对应是<threads.h> ,那么如果我想在Linux上编写一个multithreading程序,我应该包含哪个头文件<pthread.h>或<threads.h> ?

如何从HashSet <T>检索实际项目?

我已经阅读了这个问题 ,为什么这是不可能的,但还没有find解决问题的办法。 我想从.NET HashSet<T>检索一个项目。 我正在寻找一个有这个签名的方法: /// <summary> /// Determines if this set contains an item equal to <paramref name="item"/>, /// according to the comparison mechanism that was used when the set was created. /// The set is not changed. If the set does contain an item equal to /// <paramref name="item"/>, then the item from […]

C ++构造函数/析构函数inheritance

编辑:答案摘要 在下面,B是A的一个子类。 这是一个术语问题; 因为B 不能从A的接口借用,所以Ctors和dtors 不是inheritance的。 一个类至less有一个构造函数,并且只有一个析构函数。 构造函数 : B不从Ainheritance构造函数; 除非B的明确地呼叫A的Ctor 之一,否则A的默认Ctor会在 B的Ctor主体之前被自动调用(这个想法是A在B被创build之前需要被初始化)。 破坏者 : B不inheritanceA的dtor; B退出后,B的析构函数会自动调用A的析构函数。 致谢:特别要感谢Oli Charlesworth和Kos的回答,我把Kos的答案设定为解决scheme,因为这是我最理解的。 原来的post 当您在Google上search“C ++析构函数inheritance网站:stackoverflow.com”时,您当前find以下post: 构造函数和析构函数inheritance :具有30k +声望的两个用户说它是inheritance的,而不是 虚拟析构函数是inheritance的吗? :这里没有提到会指向不被inheritance的析构函数 C ++中的析构函数和inheritance? :评论似乎表明析构函数是inheritance的 Q1:我从实践中知道的是,如果不明确定义派生类的构造函数,就不能用相同的原型初始化派生对象,这是正确的吗? 即使从post中可以清楚地看到,析构函数似乎是被inheritance的,但是我仍然对这样一个事实感到困惑,那就是32k声誉的用户不会这么说。 我写了一个小例子来说明大家的想法: #include <cstdio> /******************************/ // Base class struct A { A() { printf( "\tInstance counter = %d (ctor)\n", ++instance_counter ); } ~A() { […]

“ODR使用”是什么意思?

这只是在另一个问题的背景下出现的。 显然,类模板中的成员函数只有在使用ODR的情况下才会被实例化。 有人可以解释这到底是什么意思。 维基百科关于ODR的文章没有提到“ ODR使用 ”。 但标准将其定义为 名称出现在潜在评估expression式中的variables是odr-use,除非它是满足出现在常量expression式(5.19)中的要求并立即应用左值到右值转换(4.1)的对象。 在[basic.def.odr]中。 编辑:显然这是错误的部分,整个段落包含不同的东西的多个定义。 这可能与类模板成员函数有关: 如果从可能评估的expression式引用的过程被重载parsingselect,则其名称显示为可能评估的expression式或者候选函数集合中的成员的非重载函数是odr-used,除非它是纯虚拟函数和它的名字没有明确的限定。 但是我不明白,这个规则是如何在多个编译单元中工作的? 如果我明确实例化一个类模板,是否所有的成员函数实例化?

error handling理论?

大多数有关error handling的build议归结为一些提示和技巧(例如,看这篇文章 )。 这些提示是有帮助的,但我认为他们不回答所有问题。 我觉得应该按照一定的哲学思想来devise我的应用,这个哲学思想为我们提供了一个坚实的基础。 error handling的主题有没有这样的理论? 以下是一些实际问题: 如何判断错误是应该在本地处理还是传播到更高级别的代码? 如何决定是logging一个错误,还是将错误信息显示给用户? logging应该只在应用程序代码中完成的东西吗? 或者可以从库代码做一些日志logging。 在例外的情况下,你应该在哪里抓住他们? 在低级或更高级别的代码? 如果您想通过所有的代码层来争取统一的error handling策略,或者尝试开发一个能够适应各种error handling策略的系统(以便能够处理来自第三方库的错误)。 创build错误代码列表是否有意义? 还是这些老式的? 在很多情况下,制定一个足够好的策略来处理错误条件是常识。 但是,我想知道是否有更正式的“学术”方法? PS:这是一个普遍的问题,但也欢迎C ++特定的答案(C ++是我工作的主要编程语言)。

获取std :: future的状态

是否有可能检查std::future是否已经完成? 至于我可以告诉唯一的方法做到这一wait_for调用wait_for零持续时间,并检查状态是否ready ,但有没有更好的办法?