小编Eri*_*ric的帖子

为什么我们在循环中使用i作为计数器?

我们为什么要使用

for (int i = 0 ; i < count ; i++){ }
Run Code Online (Sandbox Code Playgroud)

为什么i

为什么不

for (int a = 0; a < count; a++){ }
Run Code Online (Sandbox Code Playgroud)

我这样做,你这样做,每个人都这样做,但是为什么?

*编辑

我发现了一个关于Fortran的古老谚语,它比正确的更有趣,它说"上帝是真实的,上面的其他一切都是整数".

"上帝"将是一个变量名称,g因为它将在真实域中,而上面的所有其他内容(不包括h为笑话的目的)将是一个整数.

原来的说法似乎是:"上帝是真实的,除非宣布整数".向所有人在博士论文中引用我的道歉.

variables naming loops

91
推荐指数
0
解决办法
5320
查看次数

为什么不在C++中使用指针?

假设我定义了一些类:

class Pixel {
    public:
      Pixel(){ x=0; y=0;};
      int x;
      int y;
}
Run Code Online (Sandbox Code Playgroud)

然后使用它编写一些代码.我为什么要这样做?

Pixel p;
p.x = 2;
p.y = 5;
Run Code Online (Sandbox Code Playgroud)

来自Java世界我总是写:

Pixel* p = new Pixel();
p->x = 2;
p->y = 5;
Run Code Online (Sandbox Code Playgroud)

他们基本上做同样的事情,对吗?一个在堆栈上而另一个在堆上,所以我将在以后删除它.两者之间有什么根本区别吗?为什么我更喜欢一个呢?

c++ heap stack pointers

75
推荐指数
11
解决办法
1万
查看次数

将串流内容写入流中

我目前正在使用std::ofstream如下:

std::ofstream outFile;
outFile.open(output_file);
Run Code Online (Sandbox Code Playgroud)

然后我尝试将std::stringstream对象传递给outFile如下:

GetHolesResults(..., std::ofstream &outFile){
  float x = 1234;
  std::stringstream ss;
  ss << x << std::endl;
  outFile << ss;
}
Run Code Online (Sandbox Code Playgroud)

现在我只outFile包含垃圾:"0012E708"重复了一遍.

GetHolesResults我可以写

outFile << "Foo" << std:endl; 
Run Code Online (Sandbox Code Playgroud)

并且它将正确输出outFile.

关于我做错了什么的任何建议?

c++ parameters stl stringstream ofstream

47
推荐指数
2
解决办法
5万
查看次数

如何在不杀死Linux的情况下发出应用程序信号?

我有一个看门狗应用程序.它看我的主要应用程序可能因某种原因而崩溃(我知道这很糟糕,但这不是重点).

我编程这个看门狗接受SIGUSR1信号,以停止监控我的应用程序存在.我发出信号

kill -SIGUSR1 `pidof myapp`
Run Code Online (Sandbox Code Playgroud)

这非常有效.当我尝试发出没有内置此功能的旧版看门狗时,我的问题出现了.在这种情况下,kill信号会杀死看门狗(终止进程),这会导致进一步的复杂化(重启设备) .

有没有办法用SIGUSR1向看门狗发出信号,以便在未处理此特定信号时它不会终止?

linux signals

33
推荐指数
1
解决办法
4万
查看次数

将.NET StreamWriter输出重定向到String变量

我想知道是否可以将StreamWriter输出重定向到变量

就像是

String^ myString;
StreamWriter sw = gcnew StreamWriter([somehow specify myString])
sw->WriteLine("Foo");
Run Code Online (Sandbox Code Playgroud)

那么myString将包含Foo.我想这样做的原因是重用一个复杂的函数.我应该将它重构为一个String返回函数,但它仍然是一个很好的黑客知道

.net streamwriter

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

检查值存在于std :: map - C++中

我知道find方法在std :: map中找到提供的键,并将迭代器返回给元素.反正有没有找到值并获得元素的迭代器?我需要做的是检查std :: map中是否存在指定的值.我通过循环地图中的所有项目并进行比较来完成此操作.但我想知道有没有更好的办法.

这是我写的

bool ContainsValue(Type_ value)
{
    bool found = false;
    Map_::iterator it = internalMap.begin(); // internalMap is std::map
    while(it != internalMap.end())
    {
        found = (it->second == value);
        if(found)
            break;
        ++it;
    }
    return found;
}
Run Code Online (Sandbox Code Playgroud)

编辑

如何在内部使用另一个存储值,键组合的地图.所以我可以打电话找到它吗?std :: map中的find()是否进行顺序搜索?

谢谢

c++ iterator stdmap find

31
推荐指数
5
解决办法
7万
查看次数

用Java切片字节数组

我正在尝试切片一个字节数组来修剪数组的第一部分.我正在使用ByteBuffer,但它的行为并不像我期望的那样.

byte[] myArray = new byte[10];
ByteBuffer buf = ByteBuffer.wrap(myArray);
buf.position(5);
ByteBuffer slicedBuf = buf.slice();
byte[] newArray = slicedBuf.array();
Run Code Online (Sandbox Code Playgroud)

我希望newArray的大小为5,只包含我的ByteBuffer的最后一部分.而是返回完整的字节数组.我知道这是因为"后备缓冲区"一直都是一样的.

如何切片以仅包含阵列中所需的部分?

编辑:添加上下文

从网络接收字节.缓冲区形成如下:

[ SHA1 hash ] [ data... lots of it ]

我已经有一个函数,它将一个字节数组作为参数并计算SHA1哈希值.我想要的是切片整个缓冲区只传递没有预期哈希的数据.

java

25
推荐指数
2
解决办法
4万
查看次数

是否可以在C++中的匿名命名空间中使用某个类?

我正在将代码从Java移植到c ++,我想复制一些匿名功能.

在档案啊我有:

class A
{
private:
  int a;

  class AnonClass;
  friend class AnonClass;
};
Run Code Online (Sandbox Code Playgroud)

在文件A.cpp中我有:

namespace
{
  class AnonClass
  {
  public:
    AnonClass(A* parent)
    {
      parent->a = 0; // This doesn't work, a is not accessible
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

是否可以在C++中的匿名命名空间中使用某个类?

在Java中,您可以声明匿名类,因此它非常相似.此外,它不会将AnonClass暴露给Ah的客户

c++ namespaces friend

23
推荐指数
2
解决办法
3917
查看次数

C中的硬编码字节数组

我正在调试网络应用程序.

我必须模拟一些交换的数据才能使应用程序正常工作.在C++中,你可以做类似的事情

char* myArray = { 0x00, 0x11, 0x22 };
Run Code Online (Sandbox Code Playgroud)

但是,我似乎无法找到这种语法的C等价物.

基本上我只想用硬编码值填充数组.

c arrays syntax

22
推荐指数
3
解决办法
7万
查看次数

将文件添加到SVN,然后在提交前删除

我想我是粗心的.

我向svn添加了一堆文件svn add,然后我看到添加了一些我不想要的文件,所以我删除了它们rm.

现在我不能再提交,因为提交缺少文件.我试过svn清理但它没有帮助.

我现在的工作选择是手动删除每个.svn目录,但这似乎是错误的.

svn undo delete-file

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