我在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) 我想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#开发一个WinForm多线程应用程序.有时我的应用程序会挂起,或冻结或阻塞.
当这种情况发生并且我在DEBUG模式下运行时,无论如何都要了解我的应用程序当前的代码行是什么?由于它被冻结,我希望找到一个应用程序被锁定或阻止的点或其他什么.有可能这样做吗?
当它被冻结时,我试图打开CALL STACK窗口,但这不会显示任何信息; 我可能会采取一些行动吗?有些"暂停和检查"或其他什么?
我正在使用boost程序选项从命令行参数获取布尔值.我希望我的论点被指定为"Y",是","N","否".
实际上我的代码使用临时字符串来完成它
boost program options
最重要的是,我还使用另一个临时字符串获取默认值.
我做了所有这些工作,因为我尝试了下面的代码,但是没有用
namespace pod = boost::program_options;
("Section.Flag",
pod::value<bool>(&myFlag_bool)->default_value( false ),
"description")
Run Code Online (Sandbox Code Playgroud)
你知道升级程序选项是否可以比我用来实现它的更好?
我正在做的第一步KCachegrind/Cachegrind
.我Cachegrind
在机器A上运行然后我将输出文件移动到我安装了KCachegrind的机器B上.
我不知道为什么,但我总是先显示第一个功能,(unknown)
因为我有19.46
照片中显示的用法.我做错了什么?输出文件是否应该包含所有必要信息?
-g
就够了吗?我想顺便使用优化版本,但我不知道它是否有效.我一直都知道在 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) 我正在寻找某人对使用的看法,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
我想存储boost::gregorian::date
为一个键,boost::unordered_map
但我无法编译代码,因为它缺少这个类的正确哈希函数.
std::string
并存储它.我可能想避免这种解决方案,因为使用字符串非常昂贵.day()
函数,我不确定这是否真的合适.有没有其他更好的方法来存储日期或功能导出日期作为数字?
阅读一些代码我发现一个类只接受新的C++ 11 nullptr_t
作为参数.该课程如下所示.
我是否纠正了我唯一可以通过专门使用构造对象的东西nullptr
?
class CA {
public:
CA(nullptr_t) {}
};
Run Code Online (Sandbox Code Playgroud) 通常开发我用于打印到控制台的应用程序,以获得有用的调试/跟踪信息.我正在使用的应用程序,因为它是多线程的,有时我看到我printf
相互重叠.
我尝试使用a同步屏幕,mutex
但我最终放慢了速度并阻止了应用程序.如何解决这个问题?
我知道MT日志库,但在使用它们时,由于我记录太多,我放慢了(有点)我的应用程序.
我想到了以下想法......而不是在我的应用程序中记录为什么不在它外面登录?我想通过套接字将日志信息发送到实际在屏幕上打印出来的第二个应用程序进程.
你知道任何图书馆已经这样做了吗?我使用Linux/gcc.
谢谢
AFG