我std::stringstream广泛使用它来生成代码.当使用str()函数设置内容然后使用时,我遇到了一些奇怪的行为operator<<.有人可以向我解释这种行为.我非常感谢 - 谢谢.
示例一:
std::stringstream ssa;
ssa.str("Setting string");
std::cout << ssa.str() << std::endl;
ssa << " adding to string";
std::cout << ssa.str() << std::endl;
Run Code Online (Sandbox Code Playgroud)
输出:
设置字符串
添加到字符串
预期:
设置字符串
设置字符串添加到字符串
因此,在对文档进行一些阅读之后,我发现我应该将打开模式设置为ios_base::ate:
std::stringstream ssb(std::ios_base::ate);
ssb.str("Setting string");
std::cout << ssb.str() << std::endl;
ssb << " adding to string";
std::cout << ssb.str() << std::endl;
Run Code Online (Sandbox Code Playgroud)
输出:
设置字符串
设置字符串
再次(或现在)我期望:
设置字符串
设置字符串添加到字符串
为什么我会得到我的结果,我如何得到我想要的结果?Ei能够设置a的初始string值stringstream和附加值string吗?
我知道我可以将内容设置为空string(""),然后只使用<<operator.这实际上是我正在使用的解决方法.我只是不明白观察到的行为.解决方法使我的代码更加混乱.
有些情况下,与启动STL一些功能make_前缀一样std::make_pair,std::make_shared,std::make_unique等它为什么一个更好的做法是使用它们,而不是简单地使用构造?
auto pair2 = std::pair< int, double >( 1, 2.0 );
auto pair3 = std::make_pair( 1, 2.0 );
std::shared_ptr< int > pointer1 = std::shared_ptr< int >( new int( 10 ) );
std::shared_ptr< int > pointer2 = std::make_shared< int >( 10 );
Run Code Online (Sandbox Code Playgroud)
网上有很多关于尝试制作双范围滑块的帖子
我找到的最常见的答案是使用libqxt.然而,进入网站 它清楚地表明,由于新版本的内部api更改,它没有维护Qt.
是否Qt5为此提供了任何新功能,或者是否有更持久的Qt实现提供此功能而无需大型外部库?
在State.h我有
enum class StateID : unsigned int;
Run Code Online (Sandbox Code Playgroud)
在State.cpp我有
enum class StateID : unsigned int
{
NullID = 0,
MainMenuID,
GamePlayID,
};
Run Code Online (Sandbox Code Playgroud)
问题是任何包含的类State.h都有前向声明,但我不能enum在任何cpp文件中使用任何值,除了States.cpp(定义它),比如StateID::MainMenuID.错误说......
/home/lee/Projects/SuddenAwakening/Source/Game.cpp:24:错误:'MainMenuID'不是'StateID'的成员
我正在运行LinuxMint15KDE,g ++ 4.7,我在其他部分使用c ++ 11功能,如nullptr,unique_ptr,ect ......,所以我不会忘记c ++ 11的编译器标志.
我有这两个变量,我想将数据转换为dataToString.
QJSonArray data;
Qstring dataToString;
Run Code Online (Sandbox Code Playgroud)
在数据中有一个巨大的json像:
{
"properties": [
{
"version":"1",
"finish":"0",
"num":3,
"running":false,
"time":"00:20:00",
"player1":"John",
"player2":"",
"player3": "Peter",
"player4":"",
"team1":"",
"team2":"",
"tournament":"",
"lap":""
}
],
"game": [
{
"serve":true,
"score":"32",
"data":"0"
}
]
}
Run Code Online (Sandbox Code Playgroud)
我该怎么做 ?谢谢.
我的Qt程序很难将按钮信号连接到我的插槽.我的代码是:
Main.cpp的
#include <QtGui/QApplication>
#include "MainWidget.h"
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
MainWidget mainWidget;
mainWidget.show();
return app.exec();
}
Run Code Online (Sandbox Code Playgroud)
MainWidget.h
#ifndef MAINWIDGET_H
#define MAINWIDGET_H
#include <QWidget>
class MainWidget : public QWidget
{
public:
MainWidget();
public slots:
void bAdvice_clicked();
void bWeather_clicked();
void bNextMeeting_clicked();
void bQuit_clicked();
};
#endif // MAINWIDGET_H
Run Code Online (Sandbox Code Playgroud)
MainWidget.cpp
#include "MainWidget.h"
#include <QMessageBox>
#include <QPushButton>
#include <QTextEdit>
#include <QVBoxLayout>
MainWidget::MainWidget()
{
QLayout *layout = new QVBoxLayout();
this->setLayout(layout);
QTextEdit *message = new QTextEdit();
layout->addWidget(message);
QPushButton *bAdvice = new QPushButton("Advice"); …Run Code Online (Sandbox Code Playgroud) 我运行这段代码
A = uint8( ones( 200 ) );
a = [ A * 0 A * 1; ...
A * 2 A * 3 ];
color_map = [ 0 0 0; ...
0.3 0.3 0.3; ...
0.9 0.3 0.1; ...
1 1 1; ...
zeros( 252, 3 ) ];
h = image( a );
colormap( color_map );
Run Code Online (Sandbox Code Playgroud)
然后,我使用datatip功能选择图中的一个点.这使得图中的颜色发生变化.它们仍然具有相同的索引和RBG值,但它们是不同的颜色.然后,我删除了数据提示,颜色恢复到正确的颜色.
使用,
set(gcf, 'Renderer', 'opengl')
Run Code Online (Sandbox Code Playgroud)
使问题消失,但我想知道是否有办法避免这样做?我正在使用MATLAB R2013b.
我有一个小的lambda函数,它将找到并返回一个QTreeWidgetItem.但如果它没有找到给定的项目,那么它将返回一个nullptr.但如果我尝试编译它然后它给我一个错误.
功能:
auto takeTopLevelItem = []( QTreeWidget* aTreeWidget, const QString& aText )
{
const int count = aTreeWidget->topLevelItemCount();
for ( int index = 0; index < count; ++index )
{
auto item = aTreeWidget->topLevelItem( index );
if ( item->text( 0 ) == aText )
{
return aTreeWidget->takeTopLevelItem( index );
}
}
return nullptr; // This causes a compilation error.
};
Run Code Online (Sandbox Code Playgroud)
错误:
错误1错误C3487:'nullptr':lambda中的所有返回表达式必须具有相同的类型:以前它是'QTreeWidgetItem*'cpp 251
我用这个改变了提到的行,现在它编译:
return (QTreeWidgetItem*)( nullptr );
Run Code Online (Sandbox Code Playgroud)
但我想避免这种语法.我怎么解决这个问题?
我用Visual Studio 2012.
我正在解析一个JSON类似如下的结构
{
"item1" : "value1"
"item2" : "value2"
// ...
"itemn" : {
"outernestedItem1" : {
"innerNestedItem1" : "valuen1"
"innerNestedItem2" : "valuen2"
}
// ....
"outernestedItemn" : {
"innerNestedItem1" : "valuen1"
"innerNestedItem2" : "valuen2"
}
}
}
Run Code Online (Sandbox Code Playgroud)
外部嵌套项的数量不固定,所以我使用来自rapidjson的迭代器进行迭代,内部嵌套对象变量是固定的,所以我可以使用[]来访问它们.
const rapidjson::Value& itemn = document["itemn"];
for (rapidjson::Value::ConstMemberIterator itr = itemn.MemberBegin();
itr != itemn.MemberEnd(); ++itr)
{
rapidjson::StringBuffer sb;
rapidjson::Writer<rapidjson::StringBuffer> writer( sb );
itr->value.Accept(writer);
std::cout << sb["innerNestedItem1"].GetString();
std::cout << sb["innerNestedItem2"].GetString();
}
Run Code Online (Sandbox Code Playgroud)
但是sb(字符串缓冲区)不允许[],任何想法我怎么能这样做?
编辑1:我以非常低效的方式做到了,但只是共享解决方案,所以它可能有助于某人提出有效的解决方案.
const rapidjson::Value& itemn = document["itemn"];
for (rapidjson::Value::ConstMemberIterator itr = …Run Code Online (Sandbox Code Playgroud) 有没有办法配置clang-format工具跳过我的Qt::connect函数调用?我的构造函数中有几个连接看起来像这样:
connect( m_Job, SIGNAL( error( const QString&, const QString& ) ), this, SLOT( onError( const QString&, const QString& ) ) );
connect( m_Job, SIGNAL( message( const QString& ) ), this, SLOT( onMessage( const QString& ) ) );
connect( m_Job, SIGNAL( progress( int, int ) ), this, SLOT( onProgress( int, int ) ) );
Run Code Online (Sandbox Code Playgroud)
但是在我运行格式化工具后,它会降低可读性:
connect( m_Job, SIGNAL( error(const QString&, const QString&)), this, SLOT( onError(const QString&, const QString&)) );
connect( m_Job, SIGNAL( message(const QString&)), this, SLOT( onMessage(const …Run Code Online (Sandbox Code Playgroud) c++ ×7
c++11 ×4
qt ×3
qt5 ×2
clang-format ×1
enum-class ×1
json ×1
lambda ×1
matlab ×1
qstring ×1
qt-designer ×1
qt-signals ×1
rapidjson ×1
std ×1
stringstream ×1