小编Gab*_*ber的帖子

如何从字符串中解析日期/时间?

输入:包含日期和可选时间的字符串.不同的表现形式会很好但很必要.字符串是用户提供的,可能会格式错误.例子:

  • "2004-03-21 12:45:33" (我认为这是默认布局)
  • "2004/03/21 12:45:33" (可选布局)
  • "23.09.2004 04:12:21" (德语格式,可选)
  • "2003-02-11" (时间可能会丢失)

所需的输出:纪元以来(1970/01/01 00:00:00)或其他一些定点的秒数.

额外:此外,读取本地系统时间的UTC偏移量会很棒.

假设输入是相关机器上的本地时间.输出需要是UTC.系统只是Linux(需要Debian Lenny和Ubuntu).

我试图使用boost/date_time,但必须承认我无法绕过文档.以下工作无需从系统本地时间转换为UTC:

std::string date = "2000-01-01";
boost::posix_time::ptime ptimedate = boost::posix_time::time_from_string(date);
ptimedate += boost::posix_time::hours(Hardcoded_UTC_Offset);// where to get from?
struct tm = boost::posix_time::to_tm(ptimedate);
int64_t ticks = mktime(&mTmTime);
Run Code Online (Sandbox Code Playgroud)

我认为boost::date_time可以提供所需的UTC偏移,但我不知道如何.

c++ datetime boost utc boost-date-time

53
推荐指数
3
解决办法
6万
查看次数

在GCC的生产环境中使用C++ 11

C++ 11为我们提供了许多新的伟大且极其有用的工具.GCC对C++ 11的支持已经取得了很大进展.所以我想过何时切换到C++ 11.这个问题只与gcc有关,我不希望用任何其他编译器编译我的(我们的)代码.

在gcc支持整个C++ 11标准从受益于已经实现的功能之前,你(你)是否会切换到C++ 11?您是否仍会在稳定性和正确性非常重要的生产环境中执行此操作?您是否认为允许开发人员仅使用某些C++ 11功能是一种合理的方法?

你(你)如何决定GCC C++ 11支持何时为生产环境做好准备?

(注意:我知道这个问题,但它特别涉及到gcc 4.4并且有些过时)

c++ gcc production-environment c++11

8
推荐指数
2
解决办法
4128
查看次数

Eclipse Helios CDT:忽略构建目录

我们使用Eclipse Helios CDT进行开发.我们使用cmake作为构建系统,构建目录通常在项目目录中称为build-*.

如何让索引器和重构工具忽略构建目录?

c++ eclipse eclipse-cdt

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

将递归算法重构为迭代算法?

我有以下递归算法需要编译到迭代过程. CvSeq是一个树结构.其中contour-> h_next给出了同一级别的下一个节点. contour-> v_next给出下面级别的下一个轮廓.(子节点)

void helperParseCurves(CvSeq* contour, int level) {

    if(contour->h_next != NULL) {
        helperParseCurves(contour->h_next, level);
    }
    if(contour->v_next != NULL) {
        helperParseCurves(contour->v_next, level+1);
    }

    //Process the nodes in contour
    for(int i=0; i<contour->total; i++){        
        CvPoint* p = CV_GET_SEQ_ELEM(CvPoint, contour, i);
        //Paint the point p
    }

}
Run Code Online (Sandbox Code Playgroud)

我想将这个逻辑重构为迭代算法.关于这个的任何提示?

c algorithm recursion

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

找出多态对象的大小

我有一个指向Base* base_ptr多态对象的指针.是否有可能找出所述对象的动态类型的大小?

AFAIK,sizeof(*base_ptr)yilds的静态类型的大小base_ptr.我开始怀疑这是不可能的,但也许我忽视了一些事情.

注意:我知道我可以在我的类型层次结构中添加一个返回大小的虚函数,但在我的情况下这不是一个理想的解决方案.

编辑:sizeof(base_ptr)- >sizeof(*base_ptr)

c++ polymorphism sizeof

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

如何使用模板模板参数专门化模板类的成员

我有一个带有int和模板模板参数的模板类.现在我想专门化一个成员函数:

template <int I> class Default{};
template <int N = 0, template<int> class T = Default> struct Class
{
    void member();
};

// member definition
template <int N, template<int> class T> inline void Class<N, T>::member() {}

// partial specialisation, yields compiler error
template <template<int> class T> inline void Class<1, T>::member() {}
Run Code Online (Sandbox Code Playgroud)

任何人都可以告诉我这是否可能以及我在最后一行做错了什么?

编辑:我要感谢大家的意见.由于我还需要对某些T进行专门化,因此我选择了Nawaz建议的解决方法,专门针对整个类,因为它只有一个成员函数和一个数据成员.

c++ templates template-specialization

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

锁定sqlite3 db以进行文件下载

我在一些系统上有一个sqlite3数据库,我需要在正在进行的操作中下载.停止或暂停访问进程不是一种选择.因此,据我所知,我需要在下载期间将数据库中的SHARED锁(如http://www.sqlite.org/lockingv3.html中所述)保存到数据库,以避免数据库更改和下载过程中的损坏.我如何明确获得这样的锁定?下载是从C++程序控制的,所以我需要锁定它.

编辑:thkala建议进行数据库转储.但我更愿意找到一个带锁定的解决方案,因为我不确定是否有足够的内存可用于db的完整副本.

c c++ database sqlite locking

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

eclipse中html文件的语法着色

我们使用自定义cgi解决方案,它在html文件中使用%-tags:

<% keyword some.stuff() %>

有没有人知道在eclipse中为这些标签获取语法着色的简单方法?

html eclipse color-scheme syntax-highlighting

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

bool数组的最小大小实现

我需要一个bool数组的最小大小实现.数组的大小在编译时是已知的.

我检查std::bitsetboost::array,但他们都招致的开销是小数组显著.例如,如果数组大小为8,则容器应仅使用1个字节的内存(假设通用CPU架构).

这是存在还是我需要自己动手?

编辑:这是我最后的实施基于Tom Knapen的帖子.我为构造函数添加了一个默认值,并在越界索引的情况下添加了throw.非常感谢汤姆和其他所有人.

#include <stdexcept>
#include <climits>

/// Minimum size container for bool-arrays
/**
 * TODO: may want to add to_uint32_t accessor and the like
 * for sufficently small arrays
 */
template<int SIZE>
class bitarray
{
public:
    bitarray(bool initial_value = false);

    bool get(int index) const;
    void set(int index, bool value);

private:
    static const int ARRAY_SIZE = (SIZE + CHAR_BIT - 1) / 8;
    unsigned char mBits[ARRAY_SIZE];
};

// ---------------------------------------------------- …
Run Code Online (Sandbox Code Playgroud)

c++ bit-manipulation

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

模板模板参数,模板参数数量错误

考虑模板类C,其中包含通过模板模板参数设置的策略和两个策略定义:

template<class T> struct PolicyOne { };
template<class T, int U, int V> struct PolicyTwo { };
template<class T, template<class> class POLICY> struct C { POLICY<T> policy; };

void f()
{
    C<int, PolicyOne> mc1;
    C<int, PolicyTwo<1, 2> > mc2; // doesn't work this way
}
Run Code Online (Sandbox Code Playgroud)

PolicyTwo由于模板参数数量错误而无法正常工作.如果指定其他模板参数的类型,有没有办法PolicyTwo用作POLICY模板参数?

我正在使用C++ 03,因此别名声明不可用.我知道这个问题,但我没有看到我的问题的解决方案.

c++ templates

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