问题列表 - 第39405页

将额外参数传递给qsort的比较器

我只是想知道是否有办法让我将一个额外的参数传递给我的比较器,然后在我的qsort函数中使用它?

例如,我有这两个比较器(一个按升序排列,另一个按降序排列)

qsort(entries, 3, sizeof(struct entry), compare_desc);

int compare_asc(const void *elem1, const void *elem2)
{
     return strcmp(elem1.name.last, elem2.name.last);
}


int compare_desc(const void *elem1, const void *elem2)
{
     return strcmp(elem2.name.last, elem1.name.last);
}
Run Code Online (Sandbox Code Playgroud)

有没有办法,所以我可以做这样的事情:

int compare(const void *elem1, const void *elem2, const char *order)
{
     if (strcmp(order, "asc") == 0)
         return strcmp(elem1.name.last, elem2.name.last);
     else if (strcmp(order, "desc") == 0)
         return strcmp(elem2.name.last, elem1.name.last);
}
Run Code Online (Sandbox Code Playgroud)

我问的原因是我的排序程序必须接受开关,如果我有2个不同的开关(+ a,-a)分别用于升序和降序,那么我必须制作2个不同的比较器功能.如果我添加更多,它会变得更复杂.有没有办法改进这个程序的设计?

编辑:不允许全局和外部变量.

c

14
推荐指数
4
解决办法
5685
查看次数

搜索全球地址列表/簿

我正在开发一个应用程序,允许用户查看他们有权访问的收件箱的内容。我很难找到一种搜索全局地址列表的方法,而不是

AddressEntries entries = global.AddressEntries;
AddressEntry entry = entries["search value"];
Run Code Online (Sandbox Code Playgroud)

这有效但只返回一个实例,它是第一个找到的实例。如果有多个结果,我基本上想向用户提供一个列表。

其次,我希望能够查看联系方式,但是当我使用

ContactItem contact = entry.GetContact();
Run Code Online (Sandbox Code Playgroud)

它总是返回null,我认为是因为它正在查看当前用户的联系人个人列表

如果有意义的话,我想我正在尝试在 Outlook 中创建一个简单版本的全局通讯簿窗口。

无论如何,如果有人有任何想法或参考,我将不胜感激!

谢谢帕特里克

c# outlook-object-model

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

将指向成员函数的指针转换为普通指针

目前我有一类此类,简化为了简化:

class MyClass {
    public: 
        MyClass();
        void* someFunc(void* param);
}
Run Code Online (Sandbox Code Playgroud)

现在我需要调用这种类型的函数(不是任何类的成员,我很遗憾无法更改)但是我还需要调用它:

void secondFunc(int a, int b, void *(*pCallback)(void*));
Run Code Online (Sandbox Code Playgroud)

现在我需要传递一个实例的someFunc的地址.

一个不起作用的样本:

MyClass demoInstance;
// some other calls
secondFunc( 1, 2, demoInstance::someFunc() );
Run Code Online (Sandbox Code Playgroud)

我也试过像以下演员:

(void* (*)(void*)) demoInstance::someFunc;
reinterpret_cast<(void* (*)(void*))>(demoInstance::someFunc);
Run Code Online (Sandbox Code Playgroud)

如何使用类的成员函数作为参数调用此函数,以便可以将其用作回调?

任何想法或评论都表示赞赏.谢谢并尊重托比亚斯

c++ pointers casting

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

equal()和equalsIgnoreCase()对于相等的字符串返回false

我在mac上使用eclipse IDE(版本:3.4.2),我遇到了以下问题.

当使用equal()或equalsIgnoreCase()方法比较字符串时,即使字符串相等,我也会收到false.例如,下面的代码将以下条件视为false,即使值[0] ="debug_mode"

if (values[0].equalsIgnoreCase("debug_mode")) 
    debug_mode = true;
Run Code Online (Sandbox Code Playgroud)

这是以下循环的一部分:

String value = dis.readLine();
String values[] = value.trim().split("=");
if (values.length >= 2)
{
    Config.prnt_dbg_msg(values[0] + "\t" + values[1]);
    if (values[0].equalsIgnoreCase("debug_mode")) 
        debug_mode = isTrue(values[1]);
    if (values[0].equalsIgnoreCase("debug_query_parsing")) 
        debug_query_parsing = isTrue(values[1]);
    if (values[0].equalsIgnoreCase("username")) 
        Connection_Manager.alterAccessParameters(values[1], null, null);
    if (values[0].equalsIgnoreCase("password")) 
        Connection_Manager.alterAccessParameters(null, values[1], null);
if (values[0].equalsIgnoreCase("database")) 
        Connection_Manager.alterAccessParameters(null, null, values[1]);
    if (values[0].equalsIgnoreCase("allow_duplicate_entries")) 
        allow_duplicate_entries = isTrue(values[1]);
}                         
Run Code Online (Sandbox Code Playgroud)

我尝试使用value[0].equal("debug_mode")并得到了相同的结果.有人知道为什么吗?

java string string-comparison

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

如何在lxml中使用带有find/findall的xml命名空间?

我正在尝试解析OpenOffice ODS电子表格中的内容.ods格式本质上只是一个包含许多文档的zipfile.电子表格的内容存储在'content.xml'中.

import zipfile
from lxml import etree

zf = zipfile.ZipFile('spreadsheet.ods')
root = etree.parse(zf.open('content.xml'))
Run Code Online (Sandbox Code Playgroud)

电子表格的内容位于单元格中:

table = root.find('.//{urn:oasis:names:tc:opendocument:xmlns:table:1.0}table')
Run Code Online (Sandbox Code Playgroud)

我们也可以直接寻找行:

rows = root.findall('.//{urn:oasis:names:tc:opendocument:xmlns:table:1.0}table-row')
Run Code Online (Sandbox Code Playgroud)

各个元素知道命名空间:

>>> table.nsmap['table']
'urn:oasis:names:tc:opendocument:xmlns:table:1.0'
Run Code Online (Sandbox Code Playgroud)

如何在find/findall中直接使用命名空间?

显而易见的解决方案不起作用.

试图从表中获取行:

>>> root.findall('.//table:table')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "lxml.etree.pyx", line 1792, in lxml.etree._ElementTree.findall (src/lxml/lxml.etree.c:41770)
  File "lxml.etree.pyx", line 1297, in lxml.etree._Element.findall (src/lxml/lxml.etree.c:37027)
  File "/usr/lib/python2.6/dist-packages/lxml/_elementpath.py", line 225, in findall
    return list(iterfind(elem, path))
  File "/usr/lib/python2.6/dist-packages/lxml/_elementpath.py", line 200, in iterfind
    selector = _build_path_iterator(path)
  File "/usr/lib/python2.6/dist-packages/lxml/_elementpath.py", line 184, in _build_path_iterator …
Run Code Online (Sandbox Code Playgroud)

python xml lxml elementtree xml-namespaces

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

C#facebook graph /如何上传到相册ID

Dictionary<string, object> newPhotoParam = new Dictionary<string, object>();

newPhotoParam.Add("access_token", _app.AccessToken);
newPhotoParam.Add("source", "e:\\sample.jpg");
newPhotoParam.Add("message", "test photo upload");

_app.Api("/"+ albumID +"/photos", newPhotoParam, HttpMethod.Post);
Run Code Online (Sandbox Code Playgroud)

此代码上传失败

c# facebook facebook-graph-api

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

initWithNibName无法按预期工作

我很肯定我在这里错过了一些简单的事情.我试图在iOS中将子视图(模态视图)加载为单独的控制器.我创建了一个NIB文件,其中一个窗口指向我的控制器视图,File的Owner类设置为我的控制器类,我尝试使用nib文件的名称调用initWithNibName,但是当我尝试显示它时,它只显示一个空白视图,而不是我在NIB文件中构建的视图.如果它是模态子控制器,它可以不是NIB中的窗口吗?或者还有其他一些我错过的东西吗?

iphone controller modal-dialog nib ios

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

在开源项目中存储密码

我准备把一个项目公开放在github上.在我的项目中,对于登录验证,我接受一个字符串并强烈键入它Password:

// Stripped down here on SO for brevity
public class Password
{
    private const string salt = "sealab2021";

    public Password(string password) 
    {
        this.saltedPasswordHash = new MD5Hash(password + this.salt).ToString();
    }

    public string SaltedHash { get; private set; }
}
Run Code Online (Sandbox Code Playgroud)

显然,如果盐是公众可见的,那盐就没用了.

其他人如何在开源项目中加密密码并保持盐密码安全隐藏?

盐是否存在于文件系统的某个位置并在应用程序启动时加载?看起来像是一个合理的解决方案,但如果我要实际使用github进行源代码控制,而不仅仅是在发布新版本时对github进行转储,那么该文件仍然可供公众访问.

security passwords salt

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

将C翻译为JavaScript

我在C中有一堆math/dsp算法.单个函数,每个文件一个函数,没有花哨的链接或包含或预处理器指令,只有c99和标准库调用(主要是memset和memmoves来处理数组复制等).翻译它们不是一个大问题,但需要时间.我想知道是否有一些C - > Javascript翻译工具,以加快工作.

请注意我不需要一个完美的翻译,无论如何我会把手放在最后的结果上.我需要的是一个简单的工具,可以帮助解决基本的"无聊"问题.

有人听说过这样的事吗?

编辑:似乎emscripten会做的伎俩.

javascript c code-translation

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

如何使用JavaScript/jQuery滚动到页面顶部?

有没有办法用JavaScript/jQuery控制浏览器滚动?

当我将页面向下滚动一半,然后触发重新加载时,我希望页面打包到顶部,而是尝试查找最后一个滚动位置.所以我这样做了:

$('document').ready(function() {
   $(window).scrollTop(0);
});
Run Code Online (Sandbox Code Playgroud)

但没有运气.

编辑:

因此,当我在页面加载后调用它们时,你的答案都有效 - 谢谢.但是,如果我只是在页面上刷新,看起来浏览器计算并滚​​动到.ready事件后的旧滚动位置(我也测试了body onload()函数).

那么跟进是,有没有办法防止浏览器滚动到其过去的位置,或者重新滚动到顶部它做它的事情后?

html javascript jquery scroll

146
推荐指数
13
解决办法
24万
查看次数