当我发现boost::lexical_cast
自己想到"为什么我不早点知道这件事!" - 我讨厌写代码
stringstream ss;
ss << anIntVal;
mystring = ss.str();
Run Code Online (Sandbox Code Playgroud)
现在我写
mystring = boost::lexical_cast<string>(anIntVal);
Run Code Online (Sandbox Code Playgroud)
昨天,在stackoverflow上,我遇到了boost split(另一个将节省我编写代码的宝石).
string stringtobesplit = "AA/BB-CC")
vector<string> tokens;
boost::split(tokens, stringtobesplit, boost::is_any_of("/-"));
// tokens now holds 3 items: AA BB CC
Run Code Online (Sandbox Code Playgroud)
我要开始寻找通过Boost文档寻找其他的功能,我就可以经常使用,但我觉得,这将是很容易错过的事情.
您最常使用哪些增强功能/不想拥有?
以下代码导致cl.exe崩溃(MS VS2005).
我试图使用boost bind来创建一个调用myclass方法的函数:
#include "stdafx.h"
#include <boost/function.hpp>
#include <boost/bind.hpp>
#include <functional>
class myclass {
public:
void fun1() { printf("fun1()\n"); }
void fun2(int i) { printf("fun2(%d)\n", i); }
void testit() {
boost::function<void ()> f1( boost::bind( &myclass::fun1, this ) );
boost::function<void (int)> f2( boost::bind( &myclass::fun2, this ) ); //fails
f1();
f2(111);
}
};
int main(int argc, char* argv[]) {
myclass mc;
mc.testit();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
我听说使用PDB文件可以帮助诊断崩溃发生的位置.
我的基本理解是你给Visual Studio提供源文件,pdb文件和崩溃信息(来自Dr Watson?)
有人可以解释一下它是如何工作的/涉及的内容?(谢谢!)
我正在研究一些不再与公司合作的同事编写的代码,我找到了以下代码:(我已在下面删除了)
namespace NsA { namespace NsB { namespace NsC {
namespace {
class A { /*etc*/ };
class B { /*etc*/ };
}
namespace {
class C { /*etc*/ };
}
} } }
Run Code Online (Sandbox Code Playgroud)
我不明白第3行和第8行的命名空间命令的用途.
有人可以解释没有名称的命名空间条目的用途是什么吗?
谢谢
在我的C++程序中,我想解析一小段XML,插入一些节点,然后提取新的XML(最好是一个std::string
).
RapidXml已被推荐给我,但我看不到如何将XML作为文本字符串检索回来.
(我可以遍历节点和属性并自己构建它,但肯定有一个我缺少的功能构建.)
谢谢.
今天早上我去做git fetch并得到以下错误:
致命的:没有指定远程存储库.请指定应从中提取新修订版的URL或远程名称.
这曾经很好.看起来git忘记了(所有)我的分支和存储库之间的链接.
打字git remote -v
不会返回任何内容.
它在上周末开始工作,我唯一能想到的就是安装了最新的GitExtensions版本.但是现在我更担心是否有某种方法可以获取存储库信息.
有任何想法吗?
更新:
我的.git/config文件为空.虽然我不知道原因,但我能够远程桌面到公司的另一台计算机并检索其配置的"远程"部分.
我已经更新了我的配置文件,到目前为止看起来它正在工作:-)
更新2:我还需要通过以下方式将分支重新链接到原点:
git config branch.develop.remote origin
git config branch.develop.merge refs/heads/develop
Run Code Online (Sandbox Code Playgroud)
等等
我是WPF开发的新手,我有一个ListView,我想冻结标题行,以便在用户滚动列表时不会滚动屏幕.我继承的xaml代码看起来像这样:
<ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto">
<DockPanel>
<forms:BindableGrid DockPanel.Dock="Top" [code snipped] >
<ListView.View>
<GridView>
<GridViewColumn Header="ColA" DisplayMemberBinding="{Binding ColA}" />
<GridViewColumn Header="ColB" DisplayMemberBinding="{Binding ColB}" />
[etc]
Run Code Online (Sandbox Code Playgroud) 我有一个包含70个项目的visual studio(2005)解决方案文件.
每次我按F5运行它,它告诉我4个项目已经过时,并询问我是否要重建它们.即使我刚刚完成了一个完整版本,它也会这样做.
我理解(原则上)其中一个项目必须更新这些项目所依赖的内容,但我该如何找到什么?
是否有任何工具可以提供帮助,或者我应该遵循哪些程序来找出导致VS标记这些项目以进行重建的原因?
更新:
对于那些感兴趣的人,看起来我的电脑是/是问题(我的HD最近一直在表现).当我试图追踪问题时,连续重建开始产生编译错误.我做了一个干净的构建,并得到了大量(显然是虚假的)错误.稍后重启一次,然后重建,所有错误和依赖性问题都消失了.
对不起,我去备份所有重要文件......
我们有许多项目使用共享组件(dll)的共同基础.目前,每个项目的开发构建都链接到从组件主干构建的dll.(即主干版本使用来自其他主干版本的dll)
当我们进行发布构建时,我们有一个脚本遍历项目文件并将中继引用替换为组件的特定编号版本(从标记分支构建)
我认为这削弱了我们在开发过程中所做的测试,因为我实际工作的项目是使用不同的dll来发布版本将使用的.我希望始终针对组件的编号版本进行开发,并且只在有特定需求时才更新它们.
然而,团队中的其他人认为除非我们针对主干进行开发(并且每个版本更新到组件的更新版本),否则我们将遇到以下问题:(a)我们的产品几乎不会更新到新版本的组件( b)当我们确实需要更新它将是一项艰巨的任务,因为组件源/接口将发生如此大的变化.
你遵循什么做法,为什么?
编辑:对不起所有,我刚刚意识到我有一些困惑的事情,提到有几个主要产品共享组件 - 虽然他们共享组件,他们不在同一台PC上运行.我关心的是这样的事实:因为组件可能随着产品的每次发布而改变(即使没有特定的更新组件的要求),测试会遗漏在组件中完成的一些微妙变化,而与组件无关正在对产品进行的具体工作.
动机:我想创建一个实用程序类,而不必写:
if( someVal == val1 || someVal == val2 || someVal == val3 )
Run Code Online (Sandbox Code Playgroud)
我可以写:
if( is(someVal).in(val1, val2, val3) )
Run Code Online (Sandbox Code Playgroud)
这更接近于数学'a是(b,c,d)'的元素,并且当变量名'someVal'很长时也会节省大量的输入.
这是我到目前为止的代码(2和3值):
template<class T>
class is {
private:
T t_;
public:
is(T t) : t_(t) { }
bool in(const T& v1, const T& v2) {
return t_ == v1 || t_ == v2;
}
bool in(const T& v1, const T& v2, const T& v3) {
return t_ == v1 || t_ == v2 || t_ == v3;
}
};
Run Code Online (Sandbox Code Playgroud)
但是,如果我写,它无法编译: …
我刚刚在我们的构建服务器上设置了cruise control.net,我无法找到一个设置来告诉它一次只构建一个项目.有任何想法吗?
我正在尝试使用boost lambda来避免编写琐碎的仿函数.例如,我想使用lambda来访问结构的成员或调用类的方法,例如:
#include <vector>
#include <utility>
#include <algorithm>
#include <boost/lambda/lambda.hpp>
using namespace std;
using namespace boost::lambda;
vector< pair<int,int> > vp;
vp.push_back( make_pair<int,int>(1,1) );
vp.push_back( make_pair<int,int>(3,2) );
vp.push_back( make_pair<int,int>(2,3) );
sort(vp.begin(), vp.end(), _1.first > _2.first );
Run Code Online (Sandbox Code Playgroud)
当我尝试编译它时,我得到以下错误:
error C2039: 'first' : is not a member of 'boost::lambda::lambda_functor<T>'
with
[
T=boost::lambda::placeholder<1>
]
error C2039: 'first' : is not a member of 'boost::lambda::lambda_functor<T>'
with
[
T=boost::lambda::placeholder<2>
]
Run Code Online (Sandbox Code Playgroud)
由于vp包含pair<int,int>
我认为_1.first应该工作.我做错了什么?
c++ ×6
boost ×2
.net ×1
boost-bind ×1
boost-lambda ×1
crash ×1
debugging ×1
dependencies ×1
git ×1
header ×1
listview ×1
namespaces ×1
pdb-files ×1
rapidxml ×1
repository ×1
templates ×1
testing ×1
wpf ×1
xml ×1