小编Snp*_*nps的帖子

使用std :: cout添加时间戳

我有以下代码将我的std::cout输出重定向到日志文件.

std::ofstream out("out.txt");
std::streambuf *coutbuf = std::cout.rdbuf(); //save old buf
std::cout.rdbuf(out.rdbuf()); //redirect std::cout to out.txt!
Run Code Online (Sandbox Code Playgroud)

现在我想要的是,每当发生换行时,当前时间戳将被写入文件.

我知道我可以用以下方法实现:

std::cout << getTime() << "printing data" << std::endl;
Run Code Online (Sandbox Code Playgroud)

但我想要的是以std::cout某种方式自动处理它.那可能吗?

c++ logging iostream

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

Boost或C++ 11中是否有一个容器作为队列但具有独特的元素?

我正在寻找一个容器std::queue,它会在最后添加元素(例如,带有字段id类型的自定义类uint),但前提是该对象不在容器内.

我的类的两个元素只有在相等时才被认为id是相等的(我有重载运算符==).

这样的容器是存在于C++ 11中还是存在于Boost中?

c++ boost c++11

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

C++ 11:atomic <T> :: store和atomic_store <T>之间的区别是什么

一个是模板类的成员函数std::atomic,一个是模板函数,似乎它们做同样的事情.作为std一个类库,为什么它同时提供class和none-class版本,我认为同样的操作?

它们之间有什么真正的区别吗?

c++ class function atomic c++11

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

为什么stant :: string在用户输入中占用空格?

直接问题:

这段代码,

#include <iostream>
using namespace std;

int main() {
    std::string string = "9 9";
    std::cout << string;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

9 9作为输出返回.

但是,在输入9 9此代码时,

#include <iostream>
using namespace std;

int main() {
    std::string string;
    std::cin >> string;
    std::cout << string;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

它输出9.为什么会这样?

我想这与空间有关,但有什么办法可以避免这种情况吗?我必须说空间是数字之间唯一有效的分离.

c++ string spaces tokenize

3
推荐指数
1
解决办法
594
查看次数

decltype需要实例化对象

我正在尝试使用C++ 11标准,并提出了这个问题:

在C++ 11可以使用autodecltype自动获取返回类型的函数,例如begin()end()功能如下:

#include <vector>

template <typename T>
class Container {
private:
    std::vector<T> v;
public:
    auto begin() -> decltype(v.begin()) { return v.begin(); };
    auto end() -> decltype(v.end()) { return v.end(); };
};
Run Code Online (Sandbox Code Playgroud)

我的问题是我必须在公共声明vector<T> v 之前声明私有,这违反了我的编码风格.我想公众成员之后宣布我的所有私人会员.您必须在函数声明之前声明向量,因为表达式in decltype是对向量成员函数的调用,begin()并且需要对象的实例.

有没有解决的办法?

c++ coding-style c++11

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

在C++中增加tribool导致从右到左的条件评估

据我所知,C++总是在条件语句中从左到右进行求值

if(A, B, C)
Run Code Online (Sandbox Code Playgroud)

A将被评估第一,B第二,等等.但是,以下示例表现出一些奇怪的行为.

#include <iostream>
#include <map>
#include <memory>
#include <vector>

#include <boost/logic/tribool.hpp>

//-////////////////////////////////////////////
// File Block
class FileBlock {
public:
    FileBlock();
    virtual ~FileBlock();
    bool linked();

    std::vector<int> messages_;

private:
    boost::logic::tribool position_;
    std::shared_ptr<FileBlock> precedingBlock_ = nullptr;
    std::shared_ptr<FileBlock> followingBlock_ = nullptr;
};

FileBlock::FileBlock()  {
    std::cout << "Breakpoint." << std::endl;

    // "linked()" evaluated first by scope.
    if(linked())    {
        if(!position_
            && precedingBlock_->messages_.back() > 1)   {
                std::cout << "Unreachable." << std::endl;
        }
    }

    // "linked()" evaluated first without the tribool. …
Run Code Online (Sandbox Code Playgroud)

c++ boost operator-precedence conditional-statements c++11

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

Linux上的Java字节到字符串编码问题

我正在实现一个像这样工作的软件:

我有一台运行vt100终端应用程序的Linux服务器输出文本.我的程序telnet服务器并读取/解析文本的位到相关数据.相关数据被发送到由Web服务器运行的小客户端,该Web服务器在HTML页面上输出数据.

我的问题是某些特殊字符如"åäö"被输出为问号(经典).

背景:
我的程序使用Apache Commons TelnetClient读取字节流.字节流被转换为字符串,然后相关的位被子字符串,并返回到分隔符字符.在此之后,新字符串将转换回字节数组,并使用Socket发送到Web服务器运行的客户端.此客户端根据接收的字节创建一个字符串,并将其打印在标准输出上,Web服务器从中读取并输出HTML.

第1步:byte [] - > String - > byte [] - > [发送到客户端]

Step2:byte [] - > String - > [print output]

问题:
当我在Windows上运行我的Java程序时,所有字符(包括"åäö")都会在生成的HTML页面上正确输出.但是,如果我在Linux上运行程序,所有特殊字符都会转换为" "(问号).

Web服务器和客户端当前正在Windows上运行(步骤2).

代码:
程序基本上是这样的:

我的节目:

byte[] data = telnetClient.readData() // Assume method works and returns a byte[] array of text.

// I have my reasons to append the characters one at a time using a StringBuffer.
StringBuffer buf = new StringBuffer();
for (byte b : …
Run Code Online (Sandbox Code Playgroud)

java linux character-encoding apache-commons

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

将数组指针从派生类传递给基类C++

我试图理解C++中的继承.

我想在派生类中动态创建一个数组,并将数组指针传递给基类,然后基类填充数组.最后,我想从派生类中打印数组.

我写了下面的代码,但是当我运行它时,程序崩溃了,我得到了一个分段错误错误.

我应该如何实现这个?!

class Base {
private:
    int* array;
public:
    Base(int* a) {
        array = a;
        for(int i = 0 ; i < 10 ; i++) {
            array[i] = i;
        }
    }
};

class Child : public Base {
private:
    int* array;
public:
    Child() : array(new int[10]), Base(array) {}
    void print() {
        for(int i = 0 ; i < 10 ; i++) {
            cout << array[i] << endl;
        }
    }
};
Run Code Online (Sandbox Code Playgroud)

c++ arrays

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

如何在C++中以毫秒为单位获取当前时间?

问题是,我必须以方便的格式以毫秒为单位获取当前时间.

期望输出的示例:

21小时04分12秒512毫秒

我知道如何在几秒钟内获得这种格式,但我不知道如何让我的手在几毫秒?

c++ time milliseconds

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

创建动态对象数组

我想创建一个特定对象的动态数组,该数组也支持向数组添加新对象.

我正在努力解决这个问题,作为我课程练习的一部分.在本练习中,我们不应该使用std::vector.

例如,假设我有一个名为class的类Product并声明一个指针:

Products* products;
Run Code Online (Sandbox Code Playgroud)

那么我想支持以下内容:

products = new Product();

/* code here... */

products[1] = new Product(); // and so on...
Run Code Online (Sandbox Code Playgroud)

我知道当前的语法可能会导致访问冲突.我不提前知道数组的大小,因为它可以在整个程序中改变.

问题是:

  1. 如何在没有载体的情况下编写它?

  2. 我必须使用双指针(二维)吗?

  3. 每次我想添加一个新对象时,是否必须将数组复制到新数组(大小为+1),然后删除该数组?

c++ arrays dynamic

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