小编Ara*_*anu的帖子

C字符串库

C(不是C++)的C字符串库是否实现了抽象char *wchar_t *字符串?

要求是:

  1. 获得BSD/MIT/CDDL许可
  2. 实现某种引用计数机制
  3. 支持正则表达式
  4. 有Unicode支持

谢谢,

c string unicode char

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

使用 I/O 完成端口的异步操作返回传输的 0 字节

尽管 I/O 操作按预期工作(我的读取缓冲区已满),但使用 I/O 完成端口的异步操作返回传输的 0 个字节。

BYTE buffer[1024] = {0};
OVERLAPPED o = {0};
HANDLE file = CreateFile(
    _T("hello.txt"),
    GENERIC_READ,
    FILE_SHARE_READ,
    NULL,
    OPEN_EXISTING,
    FILE_FLAG_OVERLAPPED,
    NULL
);
HANDLE completion_port = CreateIoCompletionPort(
    file,
    NULL,
    0,
    0
);
ReadFile(
    file,
    buffer,
    1024,
    NULL,
    &o
);
Run Code Online (Sandbox Code Playgroud)

在工作线程中:

DWORD numBytes = 0;
LPOVERLAPPED po;
GetQueuedCompletionStatus(
    completion_port,
    &numBytes,
    0,
    &po,
    INFINITE
);
GetOverlappedResult(file, &o, &numBytes, FALSE);
Run Code Online (Sandbox Code Playgroud)

这两个函数都返回 numBytes 中的 0 个字节,但buffer正在填充。这是预期的行为吗?

谢谢。

c++ windows winapi asynchronous iocp

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

Java代表的地图

我正在尝试为交互式Java程序创建一个非常简单的命令行库.您启动Java程序,它会提示您输入命令.语法是:

> action [object_1, [object_2, [... object_n] ... ]]
Run Code Online (Sandbox Code Playgroud)

例如:

> addUser name "John Doe" age 42
Run Code Online (Sandbox Code Playgroud)

在这里action = "addUser", object_1 = "name", object_2 = "John Doe", object_3 = "age", object_4 = "42".

之后的一切行动是一个对象(即,一个动作使用对象).您可以看到操作和对象是简单的字符串.如有必要,还可以将对象字符串转换为数字.

我的计划是这个命令行库的用户只需创建方法(属于任何合适的Java对象)并将每个方法分配给特定的操作.命令行中的对象成为用户分配方法的参数.实现上述示例的方法的合适类将是:

class Foo {
    public void addUserHandler(
            String param1, String param2, String param3, Integer param4) {
        do.someThing();
    }
}
Run Code Online (Sandbox Code Playgroud)

当用户键入命令时,程序员分配的相应函数将使用命令行中指定的参数进行调用.

我知道Java没有函数指针(如C)或委托(如C#),实现回调的方法是通过接口,但是,我不知道如何在这种情况下使用接口.我在界面上看到的问题是他们有:

  1. 要实现的固定数量的功能
  2. 要实现的功能具有固定的声明.

(1)的问题在于我的库的用户可能决定实现任意数量的功能,因为他想要支持许多动作.(2)的问题是用户希望为具有描述性名称的函数分配,例如addUserHandler()用于"addUSer"动作.

如果Java有代理或函数指针,我只需在字符串(表示操作)和委托(在程序中实际执行操作)之间创建一个Map.我想我可以使用Reflection来模拟委托,但它是血腥的,我失去了类型安全性,因为我必须为类和方法使用String名称.有没有更好的方法?

谢谢,

java delegates function-pointers callback

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