小编rmi*_*rmi的帖子

sprintf如何与CString和std :: string一起使用

CString s = "test";
std::string ss = "test";

char z[100];
sprintf(z, "%s", ss.c_str()); // z = "test"  : OK

char z2[100];
sprintf(z2, "%s", ss); // z2 = "(null)" : OK. undefined behavior is expected

char z3[100];
sprintf(z3, "%s", s); // z3 = "test" : How is this possible ?!
Run Code Online (Sandbox Code Playgroud)

谁能解释一下如何CString正常使用sprintf

c++ mfc cstring visual-studio-2008 visual-c++

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

C代码中的C++异常处理

当我们用C编写程序时,我们可能会调用一些用C++编写但有C接口的库.然后,当我们调用这些库时,可能会发生C++异常.所以我的问题是我们如何处理这种情况.从C++开发人员的角度来看,我对这个问题更感兴趣.假设我正在开发一个将由C程序调用的C++库,我应该停止使用异常而不是返回错误代码吗?另一种情况是,如果我已经有一个使用异常的完全开发的C++库,我怎么能以一种只使用错误返回方法的快速方式传输这个库?

c c++ exception-handling

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

像32i64这样的操作数是什么意思?

请帮我理解这个表达方式:

(dwStreamSizeMax >> 32i64)
Run Code Online (Sandbox Code Playgroud)

我以前从未见过像32i64这样的操作数.谢谢.

c++ 32bit-64bit visual-c++

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

为基类设计基迭代器

我目前正在设计一个接口(Base在下面的例子中),它提供了几个虚拟方法,包括begin()end()。这两个方法简单地返回相应的迭代器,就像在任何其他集合(如类)中一样。派生类应该实现这些方法并返回它们对迭代器的特定实现。

以下(简化的)示例显示了一个派生类,它使用 aboost::transform_iterator来转换整数的私有内部列表。这个实现只是现实中的一个例子,迭代的“事物”可以是其他东西,迭代器也是如此。

该示例有效,但我有一个问题。对象类型main()并没有隐藏使用的迭代器类型为 的事实TransformIterator。基类将用于某种插件架构,其中每个插件都是一个共享库。插件不应该知道使用哪种类型的迭代器,而应该完全依赖于抽象接口。有没有办法做到这一点?

#include <boost/iterator/transform_iterator.hpp>

#include <iostream>
#include <string>
#include <vector>

template<class Iterator>
class Base
{
public:
    virtual Iterator begin() = 0;
    virtual Iterator end() = 0;
};

struct toString
{
    std::string operator()(int number) const
    {
        return std::to_string(number);
    }
};

typedef boost::transform_iterator<toString, std::vector<int>::iterator> TransformIterator;

class Derived : public Base<TransformIterator>
{
public:
    Derived() : ints{132, 3, 6451, 12, 5} {}

    TransformIterator begin()
    {
        return boost::make_transform_iterator(ints.begin(), toString());
    } …
Run Code Online (Sandbox Code Playgroud)

c++ iterator c++11 template-classes

4
推荐指数
2
解决办法
3410
查看次数

为什么不允许使用不同数量的模板参数的类/结构声明?

template <class T1, class T2>
class A {};

template <class T1>
class A {};

A<int, int> a;
A<int> b;
Run Code Online (Sandbox Code Playgroud)

此代码生成

错误C2976:'A':模板参数太少

在'A'级的第二次讨论中.

c++ templates sfinae

3
推荐指数
2
解决办法
622
查看次数

将字符串转换为整数数组

我有一个字符串,这是一个白色空格分隔整数,我想将其转换为整数向量的数组.我的字符串就像:

6 9 17 5 3 4 10 12 7 3 5 10 6 5 0 10 10 10 13 3 6 10 2 11 33 9 14 7 0 8 7 6 38 2 23 8 4 52 7 3 19 12 2 22 3 6 3 1 2 1 5 17 13 5 1 6 0 12 6 9 15 2 22 0 27 2 3 4 7 2 8 2 8 6 11 22 4 9 4 …
Run Code Online (Sandbox Code Playgroud)

c++ arrays string-parsing

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