小编ner*_*ehl的帖子

GCC没有链接正确的库

我的系统4.6.2和4.7.0上安装了两个版本的GCC.我正在运行Fedora Core 16.

安装4.6.2并安装/usr/bin4.7.0 /home/nerozehl/local/bin.对于C++库和运行时也被编译和安装了/home/nerozehl/local/lib/home/nerozehl/local/lib64.

我还安装了两个版本的Boost,其中包含/usr/lib64/home/nerozehl/local/lib.(分别提升1.47.0和1.49.0)

我遇到的问题是g ++/ld链接到默认库,而不是新的库/home/nerozehl/local.我configure用来生成Makefile,我这样称呼它:

CXX=g++47 CXXFLAGS="-g -O0 -pg" LDFLAGS="-L/home/nerozehl/local/lib" ./configure --prefix=/home/nerozehl/local
Run Code Online (Sandbox Code Playgroud)

住在哪g++47/home/nerozehl/local/bin(在我的$PATH).

当我编译时,一切都很好,并且使用了较新的标题,但是当我检查它链接的内容时:

ldd source/noes
    linux-vdso.so.1 =>  (0x00007fffebfff000)
    libboost_filesystem-mt.so.1.47.0 => /usr/lib64/libboost_filesystem-mt.so.1.47.0 (0x0000003c6a800000)
    libboost_system-mt.so.1.47.0 => /usr/lib64/libboost_system-mt.so.1.47.0 (0x0000003c6a400000)
    libboost_program_options-mt.so.1.47.0 => /usr/lib64/libboost_program_options-mt.so.1.47.0 (0x0000003c6ac00000)
    libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x0000003c6dc00000)
    libm.so.6 => /lib64/libm.so.6 (0x0000003c68c00000)
    libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x0000003c69c00000)
    libc.so.6 => /lib64/libc.so.6 (0x0000003c68800000)
    libpthread.so.0 => /lib64/libpthread.so.0 (0x0000003c69000000)
    librt.so.1 => /lib64/librt.so.1 (0x0000003c69800000)
    /lib64/ld-linux-x86-64.so.2 …
Run Code Online (Sandbox Code Playgroud)

c++ gcc g++ autotools ld

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

估计C++ 11中剩下的时间

我正在编写一个进度条类,每个n刻度都会输出一个更新的进度条std::ostream:

class progress_bar
{
public:
  progress_bar(uint64_t ticks)
    : _total_ticks(ticks), ticks_occured(0),
      _begin(std::chrono::steady_clock::now())
  ...
  void tick()
  {
    // test to see if enough progress has elapsed
    //  to warrant updating the progress bar
    //  that way we aren't wasting resources printing
    //  something that hasn't changed
    if (/* should we update */)
    {
      ...
    }
  }
private:
  std::uint64_t _total_ticks;
  std::uint64_t _ticks_occurred;
  std::chrono::steady_clock::time_point _begin;
  ...
}
Run Code Online (Sandbox Code Playgroud)

我还想输出剩余的时间.我在另一个问题上找到了一个公式,说明剩余的时间是(变量名称已更改为适合我的班级):

time_left = (time_taken / _total_ticks) * (_total_ticks - _ticks_occured)

我想填补了我的课的部分是 …

c++ algorithm c++11

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

QMainWindow不使用setMouseTracking()跟踪鼠标

我在跟踪鼠标移动时遇到问题QMainWindow.我有一个切换按钮buttonGenerate.这是代码MainWindow

class MainWindow : public QMainWindow, private Ui::MainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);

protected:
    void mouseMoveEvent(QMouseEvent *);

private slots:
    void on_buttonGenerate_toggled(bool checked);
};

void MainWindow::mouseMoveEvent(QMouseEvent *event)
{
    label_5->setText(tr("%1 %2 %3")
                     .arg(event->x())
                     .arg(event->y())
                     .arg(hasMouseTracking()));

    event->ignore();
}

void MainWindow::on_buttonGenerate_toggled(bool checked)
{
    buttonGenerate->setText(checked
                            ? tr("Stop")
                            : tr("Start"));
    setMouseTracking(checked);
}
Run Code Online (Sandbox Code Playgroud)

当按钮打开时,应跟踪鼠标,并且应显示其X和Y坐标以及是否启用跟踪label_5.当关闭按钮时,应关闭鼠标跟踪并且不更新label_5.不是这种情况.

无论是否按下按钮,都不会跟踪鼠标.只有当我按住鼠标按钮时才会label_5更新,这无论是否setMouseTracking(bool)处于活动状态.

任何见解将不胜感激.

c++ qt

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

修剪std :: string中的内部空格

我正在寻找一种优雅的方式来转换std :: string,例如:

std::string text = "   a\t   very  \t   ugly   \t\t\t\t   string       ";
Run Code Online (Sandbox Code Playgroud)

至:

std::string text = "a very ugly string";
Run Code Online (Sandbox Code Playgroud)

我已经用外壳修剪了外部空白 boost::trim(text);

[编辑]因此,多个空格和制表符减少到只有一个空格[/ edit]

删除外部空格是微不足道的.但有没有一种优雅的方法来删除内部空白,不涉及手动迭代和前一个和下一个字符的比较?也许boost我错过了什么?

c++ string boost stl trim

5
推荐指数
3
解决办法
4126
查看次数

标签 统计

c++ ×4

algorithm ×1

autotools ×1

boost ×1

c++11 ×1

g++ ×1

gcc ×1

ld ×1

qt ×1

stl ×1

string ×1

trim ×1