小编Mar*_*ski的帖子

从(char*,size_t)创建C++内存流的简单方法,而不复制数据?

我找不到任何现成的东西,所以我想出了:

class membuf : public basic_streambuf<char>
{
public:
  membuf(char* p, size_t n) {
    setg(p, p, p + n);
    setp(p, p + n);
  }
}
Run Code Online (Sandbox Code Playgroud)

用法:

char *mybuffer;
size_t length;
// ... allocate "mybuffer", put data into it, set "length"

membuf mb(mybuffer, length);
istream reader(&mb);
// use "reader"
Run Code Online (Sandbox Code Playgroud)

我知道stringstream,但它似乎无法使用给定长度的二进制数据.

我在这里发明了自己的轮子吗?

编辑

  • 不能复制输入数据,只需创建迭代数据的东西.
  • 它必须是便携式的 - 至少它应该在gcc和MSVC下工作.

c++ memorystream

29
推荐指数
2
解决办法
5万
查看次数

flex和bison duo的替代品?

有没有替代flex和bison(lex/yacc)组合?还有其他任何工具可以在BNF中指定语言语法吗?

compiler-construction

12
推荐指数
1
解决办法
5718
查看次数

如何在.NET中以ORM友好的方式存储可扩展元数据?

我似乎无法找到"如何使用ORM工具的EAV方法"问题的答案,所以我会在这里试试运气.

假设我有一张Entities表:

ID -> int
Name -> nvarchar(50)
Run Code Online (Sandbox Code Playgroud)

一个Images表:

EntityID -> int
Width -> int
Height -> int
Run Code Online (Sandbox Code Playgroud)

一张Songs桌子:

EntityID -> int
Duration -> decimal(12,3)
Run Code Online (Sandbox Code Playgroud)

我需要向实体添加可扩展的元数据(具有类型信息的未知键值对),以便我能够发出如下查询:

找到所有Duration超过3分钟的歌曲,Name以"The"开头,元数据符合以下条件:

  • HasGuitarSolo 设置为true
  • GuitarSoloDuration 大于30秒

并按GuitarSoloDuration降序对结果进行排序.

我不想创建HasGuitarSolo,GuitarSoloDuration数据库等栏目,我非常希望将它们存储在一个EAV样的模式,或者说不需要钥匙了前面的知识的替代模式.

.net sql orm entity-attribute-value

12
推荐指数
1
解决办法
762
查看次数

WIN32:让执行到另一个(给定)线程

我正在寻找一种方法来将线程执行的预定时间片的剩余部分产生到另一个线程.WINAPI中有一个SwitchToThread函数,但它不允许调用者指定它想要切换到的线程.我浏览了MSDN很长一段时间,并没有发现任何可以提供的东西.

对于像我这样的操作系统内部的外行,似乎屈服线程应该能够指定它想要将执行传递给哪个线程.是可能还是仅仅是我的想象力?

windows winapi multithreading

7
推荐指数
1
解决办法
4035
查看次数

显式抛出NullReferenceException的原因?

我正在清理一些遗留代码,并且我找到了显式抛出的方法NullReferenceException(例如:在检查类的某些属性是否为空时,或检查配置时).由于在空引用的情况下CLR抛出了这种类型的异常,对于应用程序显式抛出,这似乎是一个非常糟糕的异常选择.

我的问题是 - 对于从代码中明确抛出的异常,有什么理由NullReferenceException可以作为一个很好的选择吗?

.net nullreferenceexception

7
推荐指数
2
解决办法
455
查看次数

计算C#代码中的不同字符串

我需要估计遗留项目所需的本地化工作量.我正在寻找一个可以指向目录的工具,它会:

  • 解析目录结构中的所有*.cs文件
  • 从代码中提取所有C#字符串文字
  • 计算字符串出现的总次数

你知道任何可以做到这一点的工具吗?写它会很简单,但如果有时间可以保存,那为什么不保存呢?

c# string localization

6
推荐指数
1
解决办法
616
查看次数

流畅的NHibernate以智能方式映射IDictionary <string,class>

鉴于这些类:

using System.Collections.Generic;

namespace FluentMappingsQuestion
{
    public class Entity
    {
        public virtual int Id { get; set; }
        public virtual IDictionary<string, Property> Properties { get; set; }
    }

    public class Property
    {
        public virtual Entity OwningEntity { get; set; }
        public virtual string Name { get; set; }
        public virtual int Value { get; set; }
        public virtual decimal OtherValue { get; set; }
    }
}
Run Code Online (Sandbox Code Playgroud)

如何使用NHibernate(最好是流利的味道)映射它们,以便这样做:

[Test]
public void EntityPropertyMappingTest()
{
    using (var session = _factory.OpenSession())
    {
        var entity …
Run Code Online (Sandbox Code Playgroud)

nhibernate nhibernate-mapping fluent-nhibernate

5
推荐指数
1
解决办法
303
查看次数

在构建期间自动执行xsd.exe

我需要一种基于*.xsd文件在构建期间自动重新生成*.cs文件的方法,最好不涉及任何自定义加载项.这也需要在CI构建上运行.

我不确定我是否遗漏了一些明显的东西,或者这对我来说是否真的很棘手?

.net c# msbuild xsd visual-studio

5
推荐指数
1
解决办法
9060
查看次数

将 Dictionary&lt;string, class&gt; 转换为 IDictionary&lt;string, interface&gt;

我有一个包含参数字典的类:

public class Parameter : IExecutionParameter, IDesignerParameter
{
}

public interface IExecutionSettings
{
  IDictionary<string, IExecutionParameter> Parameters { get; }
}

public interface IDesignerSettings
{
  IDictionary<string, IDesignerParameter> Parameters { get; }
}

public class Settings : IExecutionSettings, IDesignerSettings
{
  private Dictionary<string, Parameter> _parameters;

  // TODO: Implement IExecutionSettings.Parameters
  // TODO: Implement IDesignerSettings.Parameters
}
Run Code Online (Sandbox Code Playgroud)

我想创建这些接口的显式实现(我知道该怎么做),但我不知道如何正确地转换字典。

任何帮助将不胜感激。

.net c#

3
推荐指数
1
解决办法
1635
查看次数