小编Rod*_*ddy的帖子

23,148,855,308,184,500是一个神奇的数字,还是纯粹的机会?

新闻报道等这一指示上述号码可能出现的编程错误.

一名男子在美国突然出现在当地的加油站购买一包香烟 - 但却发现他的信用卡收费为23,148,855,308,184,500美元.

这是23亿美元(14亿英镑) - 是美国国债的很多倍.*

在十六进制中它是$ 523DC2E199EBB4,一见钟情似乎并不十分有趣.

任何人都有任何关于编程错误会导致这种情况的想法吗?

magic-numbers

556
推荐指数
7
解决办法
4万
查看次数

为什么C++ STL不提供任何"树"容器?

为什么C++ STL不提供任何"树"容器,而最好使用什么?

我想将对象的层次结构存储为树,而不是使用树作为性能增强...

c++ tree stl

362
推荐指数
13
解决办法
19万
查看次数

round()for C++中的float

我需要一个简单的浮点舍入函数,因此:

double round(double);

round(0.1) = 0
round(-0.1) = 0
round(-0.9) = -1
Run Code Online (Sandbox Code Playgroud)

我能找到ceil()floor()在math.h中-但不是round().

它是以另一个名称存在于标准C++库中,还是缺少?

c++ floating-point rounding

227
推荐指数
11
解决办法
36万
查看次数

何时 - 以及为什么 - 应该在Windows注册表中存储数据?

作为开发人员,在注册表中存储配置/选项的工具是我生命中的祸根.我无法轻易跟踪这些选项的变化,无法轻松地将它们从机器移植到机器,这一切都让我真正渴望.INI文件的美好时光......

在编写我自己的应用程序时,我应该选择放入注册表而不是旧式配置文件,为什么?

windows registry

124
推荐指数
6
解决办法
2万
查看次数

最常用的部分是Boost

当我发现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文档寻找其他的功能,我就可以经常使用,但我觉得,这将是很容易错过的事情.

您最常使用哪些增强功能/不想拥有?

c++ boost

114
推荐指数
17
解决办法
2万
查看次数

如何轻松地将c ++枚举映射到字符串

我在一些库头文件中有一堆枚举类型,我正在使用,我想有一种方法将枚举值转换为用户字符串 - 反之亦然.

RTTI不会为我做这件事,因为'用户字符串'需要比枚举更具可读性.

一个强力解决方案将是一堆像这样的功能,但我觉得这有点像C样.

enum MyEnum {VAL1, VAL2,VAL3};

String getStringFromEnum(MyEnum e)
{
  switch e
  {
  case VAL1: return "Value 1";
  case VAL2: return "Value 2";
  case VAL1: return "Value 3";
  default: throw Exception("Bad MyEnum");
  }
}
Run Code Online (Sandbox Code Playgroud)

我有一种直觉,认为使用模板有一个优雅的解决方案,但我还不能完全理解它.

更新:感谢您的建议 - 我应该明确说明枚举是在第三方库头中定义的,所以我不想更改它们的定义.

我现在的直觉是避免使用模板并执行以下操作:

char * MyGetValue(int v, char *tmp); // implementation is trivial

#define ENUM_MAP(type, strings) char * getStringValue(const type &T) \
 { \
 return MyGetValue((int)T, strings); \
 }

; enum eee {AA,BB,CC}; - exists in library header file 
; …
Run Code Online (Sandbox Code Playgroud)

c++ enums templates

113
推荐指数
8
解决办法
20万
查看次数

作为开发人员,您对Windows安装进行了哪些更改?

当我得到一个vanilla Windows系统时,我会改变一些东西以使其更适合开发人员.

其中一些我记得每一次,其他的东西,我只做了什么时候.

例子:

  • 显示所有文件类型的扩展名
  • 使隐藏和系统文件可见
  • 关闭Windows Defender

我似乎还记得杰夫关于这个主题的博客文章,但无法找到它!

你还做了什么,你有没有自动化这个过程的工具?

windows configuration

80
推荐指数
14
解决办法
5820
查看次数

标准的Windows .ini文件是否允许注释?

Windows ini文件中是否允许注释?(...假设您正在使用GetPrivateProfileString api函数来读取它们...)

[Section]
Name=Value   ; comment

; full line comment
Run Code Online (Sandbox Code Playgroud)

并且,在任何地方都有适当的.INI文件格式规范吗?

谢谢你的回复 - 但也许我不够清楚.它只是我感兴趣的Windows API调用所读取的格式.我知道其他实现允许注释,但它特别是我需要了解的MS Windows规范和实现.

windows ini comments

79
推荐指数
3
解决办法
11万
查看次数

如何"取消使用"命名空间?

我的开发系统(Codegear C++ Builder)的一个变幻莫测是,一些自动生成的头文件坚持要...

using namespace xyzzy
Run Code Online (Sandbox Code Playgroud)

...中的语句,当我最不想要或期望它时,它会对我的代码产生影响.

有没有办法可以以某种方式取消/覆盖以前的"使用"语句来避免这种情况.

也许...

unusing namespace xyzzy;
Run Code Online (Sandbox Code Playgroud)

c++ namespaces c++builder

77
推荐指数
5
解决办法
4万
查看次数

如何将整个流读入std :: string?

我正在尝试将整个流(多行)读成字符串.

我正在使用这个代码,它有效,但它冒犯了我的风格......当然有一种更简单的方法吗?也许使用stringstreams?

void Obj::loadFromStream(std::istream & stream)
{ 
  std::string s;

  std::streampos p = stream.tellg();  // remember where we are

  stream.seekg(0, std::ios_base::end); // go to the end
  std::streamoff sz = stream.tellg() - p;  // work out the size
  stream.seekg(p);        // restore the position

  s.resize(sz);          // resize the string
  stream.read(&s[0], sz);  // and finally, read in the data.
Run Code Online (Sandbox Code Playgroud)


实际上,const对字符串的引用也可以,这可能会使事情变得更容易......

const std::string &s(... a miracle occurs here...)
Run Code Online (Sandbox Code Playgroud)

c++ string stream

68
推荐指数
4
解决办法
5万
查看次数