我的系统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) 我正在编写一个进度条类,每个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)
我想填补了我的课的部分是 …
我在跟踪鼠标移动时遇到问题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)处于活动状态.
任何见解将不胜感激.
我正在寻找一种优雅的方式来转换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我错过了什么?