小编def*_*alt的帖子

逻辑运算符的书面版本

是我见过的唯一一个地方and,or并被not列为C++中的实际运算符.当我在NetBeans中编写一个测试程序时,我得到了红色下划线,好像有一个语法错误,并认为该网站是错误的,但它是错误的NetBeans,因为它编译并按预期运行.

我可以看到!受到青睐,notand&& 的可读性or似乎比他们的语法兄弟更大.为什么这些版本的逻辑运算符存在,为什么看似没有人使用它?这是真正有效的C++还是与语言中包含的C的某种兼容性?

c++ language-features logical-operators

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

为什么两个字节的xor运算符产生一个int?

        //key & hash are both byte[]
        int leftPos = 0, rightPos = 31;
        while(leftPos < 16) {
            //possible loss of precision. required: byte, found: int
            key[leftPos] = hash[leftPos] ^ hash[rightPos];
            leftPos++;
            rightPos--;
        }
Run Code Online (Sandbox Code Playgroud)

为什么Java中的两个字节的按位运算会返回一个int?我知道我可以把它转回到字节,但它看起来很傻.

java byte casting numeric xor

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

内存中的敏感数据

我正在研究一个Java密码管理器,我目前拥有所有用户的数据,在从文件解密后,始终在内存中存储并作为字符串存储,以便在UI等中显示.

这在任何方面都是安全风险吗?我特别担心有人"倾倒"或以某种方式读取计算机的内存并查找用户的裸数据.

我已经考虑过对所有敏感的数据(密码)进行加密,并且只根据需要对每个部分进行解密并在此后进行销毁......但是我宁愿不经历并在迷信中更改大量代码.

memory security

19
推荐指数
4
解决办法
6336
查看次数

C++ 11中的高阶函数

我正在尝试使用C++ 11中提供的新匿名函数编写泛型折叠函数,这是我所拥有的:

template<typename T>
T foldl(std::function<T(T,T)> f, T initial, std::vector<T> items) {
    T accum = initial;
    for(typename std::vector<T>::iterator it = items.begin(); it != items.end(); ++it) {
        accum = f(accum, (*it));
    }
    return accum;
}
Run Code Online (Sandbox Code Playgroud)

以下尝试使用它:

std::vector<int> arr;
arr.assign(8, 2);
foldl([] (int x, int y) -> int { return x * y; }, 1, arr);
Run Code Online (Sandbox Code Playgroud)

导致错误:

main.cpp:44:61: error: no matching function for call to 'foldl(main(int, char**)::<lambda(int, int)>, int, std::vector<int>&)'
main.cpp:44:61: note: candidate is:
main.cpp:20:3: note: template<class T> T foldl(std::function<T(T, T)>, T, …
Run Code Online (Sandbox Code Playgroud)

c++ lambda c++11

10
推荐指数
1
解决办法
7289
查看次数

为什么使用switch语句而不是if else语句?

开关似乎没那么无用,因为它们可以用if-else语句替换,它可以做的不仅仅是匹配一个char/int/enum等.我只能想到一个很好用于一个开关,那将是解释命令线args.

switch语句有哪些实际用途?

language-agnostic switch-statement

9
推荐指数
5
解决办法
985
查看次数

为什么可以在函数参数中指定数组的大小?

我不明白为什么下面的例子编译和工作:

void printValues(int nums[3], int length) {
    for(int i = 0; i < length; i++) 
        std::cout << nums[i] << " ";
    std::cout << '\n';
}
Run Code Online (Sandbox Code Playgroud)

似乎完全忽略了3的大小,但是放置无效大小会导致编译错误.这里发生了什么?

c++ arrays function

7
推荐指数
1
解决办法
3984
查看次数

用Java编写文件解析器的技巧?

编辑:我主要解析"逗号分隔的值",模糊带来了这个词我的注意.

解释CSV块是这里的主要问题.

我知道如何将文件读成类似于String[]某些基本功能的东西String,但我不认为使用类似的方法contains()并按字符分析所有内容都可行.

我有什么方法可以更聪明地做到这一点?

一行示例:

-barfoob: boobs, foob, "foo bar"

java parsing

6
推荐指数
3
解决办法
5664
查看次数

更有效地浏览JDK文档

到目前为止,我刚刚在谷歌的类名搜索查询结束时添加"java 6",但有时候我正在寻找我不知道名字的类,但是我想要的是我想要的去做.

有效浏览JDK文档有任何提示或技巧吗?

java javadoc

2
推荐指数
1
解决办法
372
查看次数