小编pap*_*jam的帖子

嵌套try ...捕获C++异常处理程序?

我想在异常处理程序中执行的代码本身可能会抛出异常.

以下结构是否合法C++?如果是的话,有任何缺点吗?

try
{
    // ...
}
catch (const E&)
{
    try
    {
        // ...
    }
    catch (const F&)
    {

    }
}
Run Code Online (Sandbox Code Playgroud)

c++ exception try-catch

15
推荐指数
2
解决办法
8354
查看次数

一个HTML文件中有多个不同的页面

有没有办法在一个HTML文件中包含多个不同的HTML页面?例如,假设我有一个包含两个页面的网站:

Page 1 : click here for page 2
Run Code Online (Sandbox Code Playgroud)

Page 2 : click here for page 1
Run Code Online (Sandbox Code Playgroud)

我是否可以创建一个HTML文件,为两个页面嵌入简单的静态HTML,但一次只显示一个?我的实际页面当然更复杂的图像,表格和javascript来扩展表格行.我宁愿避免太多的脚本代码.谢谢!

html

14
推荐指数
1
解决办法
14万
查看次数

数组大小元函数 - 是否在某处提升?

我在博客上找到了以下模板:

template <typename T, size_t N>
struct array_info<T[N]>
{
    typedef T type;
    enum { size = N };
};
Run Code Online (Sandbox Code Playgroud)

这是一个优雅的替代品sizeof(a) / sizeof(a[0]).

获取数组大小的常用构造肯定应该在库中的某个位置.我不知道一个.任何人都可以告诉我这个功能是在某个地方和/或Boost的标准库中吗?优选地,以易于使用和轻质的形式.

c++ arrays templates boost sizeof

14
推荐指数
2
解决办法
4129
查看次数

&C对C++中的参数类型有什么意义?

可能重复:
T &&在C++ 0x中意味着什么?

在我读到这个答案之前,我从未见过双安瓿.

有问题的代码段是这样的:

template <typename T>
T& as_lvalue(T&& x)
{
    return x;
}
Run Code Online (Sandbox Code Playgroud)

有什么作用&&?可以传递什么类型的参数as_lvalue()

c++ reference rvalue-reference c++11

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

折叠Visual Studio中的所有非活动预处理程序块

我正在使用一些具有大量条件宏的第三方代码.Visual Studio非常擅长检测非活动代码,即包含在#if...... #endif中的代码,它不会被编译,我可以单独手动折叠它们.

我想自动隐藏非活动块 - 所有这些.这可能吗?

编辑:VS2012可以实现吗?可能是升级的原因.

code-folding visual-studio-2010 visual-studio visual-studio-2012

11
推荐指数
1
解决办法
3283
查看次数

C/C++宏扩展为参数,参数为字符串

我有许多变量与工程规范文档中的元素命名相同,因此名称的字符串版本也很有用.

我发现自己经常使用像这样的宏:

#define MACRO(a) a, #a
Run Code Online (Sandbox Code Playgroud)

典型用法是:

void someFunction(int a, const char *name);

someFunction(MACRO(meaningfully_named_variable));
Run Code Online (Sandbox Code Playgroud)

我的问题有三个:

  • 有没有更好的方法呢?
  • Boost或其他库中是否有类似的宏?
  • 如果没有,我怎样才能改进并重命名它以使其清晰有用?

编辑 我应该说上面是一个最小的例子.该函数可能具有其他参数,并且命名实体可能是数据成员,甚至可能是函数本身.

我正在为C++考虑的另一个扩展是一个NamedRef可以接收宏内容的类.

template <typename T>
struct NamedRef
{
    NamedRef(T *t, const char *name) : t(t), name(name) { }
    T *t;
    const char *name;
};

template <typename T>
NamedRef<T> namedRef(T &t, const char *name)
{
    return NamedRef<T>(&t, name);
}

#define WITH_NAME(a) a, #a

// more sophisticated usage example
void otherFunction(double, NamedRef<int>, bool);

otherFunction(0.0, namedRef(object.WITH_NAME(meaningful_member_name)), false);
Run Code Online (Sandbox Code Playgroud)

c++ stringification c-preprocessor

8
推荐指数
1
解决办法
2288
查看次数

模块属性名称 - 值对C++ API框架 - 重新发明?

我经常遇到API,允许用户获取和设置控制模块操作的各种参数.我现在发现自己正在考虑编写另一个属性API但不想重新发明轮子.

以下是典型的基本客户端代码:

setInt("bitrate", 1000);
setEnum("mode", MODE_FAST);
setStr("output file", "music.mp3");
Run Code Online (Sandbox Code Playgroud)

通常可以设置许多参数,并且这些属性集通常在不断发展中.

有些API比其他API更智能,更高级的功能是:

  • 属性的分层分组
  • 枚举属性
  • 具有强制最小值和最大值的数字参数
  • 默认参数值
  • 启用,禁用或只读的设置
  • 动态参数 - 显示,消失,设置最小/最大,启用,禁用或只读的设置,具体取决于其他参数的状态.
  • 通过UUID键而不是文本名访问的属性

除了上面示例代码中的C风格访问器之外,我还遇到了以下框架:

  • 读/写文件属性(例如XML)
  • 对Windows注册表的读/写设置
  • 与系统属性API的接口 IPersistPropertyBag
  • 拥有默认的哑GUI实现,例如树视图或列表
  • 具有适合于最小/最大/启用状态的GUI扩展,从而减少GUI代码中的重复.

我很想找到一个精心设计的公共图书馆,为上述所有人提供框架,但到目前为止已经画了一个空白.我知道Boost.PropertyTree,但它只是一个骨架.我应该注意其他可移植属性API框架吗?

c++ api settings properties boost-propertytree

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

Perl或Bash线程池脚本?

我有一个脚本 - 一个线性的命令列表 - 需要很长时间才能顺序运行.我想创建一个实用程序脚本(Perl,Bash或其他可用于Cygwin),它可以从任何线性脚本读取命令并将它们分配给可配置数量的并行工作程序.

如果myscript是的话

command1
command2
command3
Run Code Online (Sandbox Code Playgroud)

我可以跑:

threadpool -n 2 myscript
Run Code Online (Sandbox Code Playgroud)

两个线程将被创建,一个有开始command1和其他command2.无论哪个线程首先完成其第一个作业,都会运行command3.

在深入Perl之前(已经很长时间了)我想我应该问专家这样的事情是否已经存在.我确信应该有这样的东西,因为它对于利用多CPU机器和并行网络传输(wgetscp)都非常有用.我想我不知道正确的搜索条件.谢谢!

bash perl multithreading threadpool

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

是否可以编写不需要服务器的本地Web应用程序?

我想创建一个本地应用程序,它具有基于浏览器的UI而不是基于MFC/Qt /等的独立GUI.如果我不想在本地计算机上运行Web服务器,我该如何实现动态我应用程序的一部分?浏览器可以指向机器上的本地脚本,可执行文件或库吗?我可以直接使用本地数据库吗>这种方法存在哪些缺陷?

web-applications local

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

当键是对象的一部分时,最合适的关联STL容器[C++]

我有一个这样的课:

struct Thing
{
    unsigned index;
    // more data members
};
Run Code Online (Sandbox Code Playgroud)

我用a std::map<Thing>来包含我的Things.调用代码看起来像这样:

Thing myThing(/*...*/);
std::map<Thing> things;
things[myThing.index] = myThing;
// ...
Thing &thing3 = things[3];
Run Code Online (Sandbox Code Playgroud)

我想知道是否有一种方法可以Thing::index直接使用而无需隐式地将其复制到其中pair::first.

我想我需要提供某种Thing比较运算符,但没关系. std::set可能会工作,但我需要一个完整的Thing对象作为关键:

std::set<Thing> things;
Thing &thing3 = *things.find(Thing(3));
Run Code Online (Sandbox Code Playgroud)

除了重构成Thing一个std::pair,我可以用STL做得更好吗?

c++ containers stl map set

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