小编Abr*_*ile的帖子

g ++ 4.4.3中的std :: atomic支持

我在Ubuntu OS上使用g ++版本4.4.3.根据这个矩阵,它也应该支持std::atomic.我每次都用

 #include <atomic>
Run Code Online (Sandbox Code Playgroud)

编译器给我一个错误并说error: atomic: No such file or directory.

你有同样的问题吗?我正在使用以下行编译

    g++ -std=c++0x -Wall myCode.cpp -o myApp</code>
Run Code Online (Sandbox Code Playgroud)

g++ atomic c++11

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

使用getline从for循环中安全读取

我想std::getline在for循环中使用一个流来读取.

我的意思是一个继承自的流std::basic_iostream.

std::string line;            
for(;;){
      try{
          std::getline( myStreamObj, line );
          if( line != "" ){
              std::cout << line << std::endl;
          }
      }
      catch( std::ios_base::failure& ex ){
          std::cout << ex.what() << std::endl;
      }
  }

我还要检查其他错误情况,如

eofbit failbit badbit

但我对此感到有点困惑.

如果满足这些3个标志的某些条件设置是抛出的任何异常std::ios_base::failure吗?如何处理这3个案例?我还需要以其他方式进行检查吗?

谢谢AFG

c++

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

知道应用程序在什么时候冻结

我正在用C#开发一个WinForm多线程应用程序.有时我的应用程序会挂起,或冻结或阻塞.

当这种情况发生并且我在DEBUG模式下运行时,无论如何都要了解我的应用程序当前的代码行是什么?由于它被冻结,我希望找到一个应用程序被锁定或阻止的点或其他什么.有可能这样做吗?

当它被冻结时,我试图打开CALL STACK窗口,但这不会显示任何信息; 我可能会采取一些行动吗?有些"暂停和检查"或其他什么?

c#

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

来自boost程序选项的布尔选项

我正在使用boost程序选项从命令行参数获取布尔值.我希望我的论点被指定为"Y",是","N","否".

实际上我的代码使用临时字符串来完成它

  1. 将被解析 boost program options
  2. 检查"是","是","否"或"否"
  3. 分配给布尔变量成员.

最重要的是,我还使用另一个临时字符串获取默认值.

我做了所有这些工作,因为我尝试了下面的代码,但是没有用

      namespace pod = boost::program_options;

      ("Section.Flag", 
           pod::value<bool>(&myFlag_bool)->default_value( false ), 
           "description")
Run Code Online (Sandbox Code Playgroud)

你知道升级程序选项是否可以比我用来实现它的更好?

c++ boost-program-options

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

第一个功能未知

我正在做的第一步KCachegrind/Cachegrind.我Cachegrind在机器A上运行然后我将输出文件移动到我安装了KCachegrind的机器B上.

我不知道为什么,但我总是先显示第一个功能,(unknown)因为我有19.46照片中显示的用法.我做错了什么?输出文件是否应该包含所有必要信息?

  1. 我用的是编译标志-g就够了吗?我想顺便使用优化版本,但我不知道它是否有效.
  2. 可能是因为我在同一台机器上运行Kcachegrind是最好的吗?

在此输入图像描述

c c++ profiling kcachegrind

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

类作为模板参数的前向声明

我一直都知道在 C++ 中你只能使用带有引用或指针的前向声明类。为什么如果我使用下面的前向声明类作为std::vector我在编译过程中没有任何问题的模板参数?

谢谢

AFG

 // MyFile.hpp
 class OutClass{
 public:
      class InnClass;
      OutClass();
      void print();

      // why this doesn't create compile time
      std::vector< InnClass > m_data;
 };


 // MyFile.cpp
 class OutClass::InnClass{
 public:
      InnClass() : m_ciao(0) {}
      int m_data;
 };


 OutClass::OutClass()
 : m_data(){
        InnClass a, b;
       a.m_ciao=1; b.m_ciao=2;
        m_data.push_back( a );
        m_data.push_back( b );
 }

 void OutClass::print(){
      std::cout << m_data[0].m_ciao << std::endl;
      std::cout << m_data[1].m_ciao << std::endl;
 }


 int main( int argc, char** argv ){
      OutClass outObj;
      outObj.print();
      return …
Run Code Online (Sandbox Code Playgroud)

c++ templates forward-declaration

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

std :: logic_error而不是return false

我正在寻找某人对使用的看法,std::logic_error而不是使用嵌套的if/elseif的复杂列表返回true/false.

我想从许多类似的功能中移动,如下所示

bool validate_data(){
    std::vector<int> v; 
    //fill with data
    if( v.find(10) == v.end() ){
       return false;
    } 
    // other checks that return false
}
Run Code Online (Sandbox Code Playgroud)

bool validate_data(){
    std::vector<int> v; 
    //fill with data
    if( v.find(10) == v.end() ){
       throw std::logic_error("error message");
    } 
    // other checks that return false
}
Run Code Online (Sandbox Code Playgroud)

并在一个try-catch块中调用所有这些函数列表.

既然它来自std::exception可能我不知道它是不是一个好主意.

是否有人使用如下例子?

非常感谢

AFG

c++ validation exception-handling

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

带有格里高利日期的unordered_map

我想存储boost::gregorian::date为一个键,boost::unordered_map但我无法编译代码,因为它缺少这个类的正确哈希函数.

  1. 一个简单的解决方案是转换std::string并存储它.我可能想避免这种解决方案,因为使用字符串非常昂贵.
  2. 我试图找到一些函数将日期导出到数字,但我只能阅读该day()函数,我不确定这是否真的合适.
  3. 也许我可以计算出我的约会和参考日期之间的天数?

有没有其他更好的方法来存储日期或功能导出日期作为数字?

c++ boost-date-time boost-unordered

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

C++ nullptrt_t作为构造函数中的参数

阅读一些代码我发现一个类只接受新的C++ 11 nullptr_t作为参数.该课程如下所示.

我是否纠正了我唯一可以通过专门使用构造对象的东西nullptr

class CA {
 public:
 CA(nullptr_t) {}  
};
Run Code Online (Sandbox Code Playgroud)

nullptr c++11

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

在多线程应用程序中控制台

通常开发我用于打印到控制台的应用程序,以获得有用的调试/跟踪信息.我正在使用的应用程序,因为它是多线程的,有时我看到我printf相互重叠.

我尝试使用a同步屏幕,mutex但我最终放慢了速度并阻止了应用程序.如何解决这个问题?

我知道MT日志库,但在使用它们时,由于我记录太多,我放慢了(有点)我的应用程序.

我想到了以下想法......而不是我的应用程序中记录为什么不在它外面登录?我想通过套接字将日志信息发送到实际在屏幕上打印出来的第二个应用程序进程.

你知道任何图书馆已经这样做了吗?我使用Linux/gcc.

谢谢

AFG

c c++ logging multithreading

4
推荐指数
1
解决办法
2325
查看次数