C(不是C++)的C字符串库是否实现了抽象char *和wchar_t *字符串?
要求是:
谢谢,
尽管 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正在填充。这是预期的行为吗?
谢谢。
我正在尝试为交互式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)的问题是用户希望为具有描述性名称的函数分配,例如addUserHandler()用于"addUSer"动作.
如果Java有代理或函数指针,我只需在字符串(表示操作)和委托(在程序中实际执行操作)之间创建一个Map.我想我可以使用Reflection来模拟委托,但它是血腥的,我失去了类型安全性,因为我必须为类和方法使用String名称.有没有更好的方法?
谢谢,