如果我有一个C字符串,它是一个指向空终止字符数组的指针,我该如何将它转换为常规D字符串?
我想知道这个的原因是因为我目前正在使用外部C库,在错误时返回C字符串.
每当我运行下面的代码(是的,这是所有代码)时,编译器会给我一个错误:
错误:初始化程序无法确定'path'的大小
我想要做的是将argv [0]的内容复制到路径变量中,该内容是应用程序作为字符数组的路径.
int main(int argc, char** argv) {
int offset = 0;
int pathSize = 0;
while(argv[0][pathSize] != '\0')
pathSize++;
char path[] = new char[pathSize];
delete &path;
return 0;
}
Run Code Online (Sandbox Code Playgroud) 是否有任何C++(LGPL或LGPL)声音库,它允许我通过纯粹指定频率和音量等内容播放声音?
我的目标平台是Linux/Ubuntu,我并不真正关心跨平台.
如果我可以发送一个声音数组并且它能够将它压缩成一个常见的声音文件,例如mp3,那就太好了.
我正在寻找类似OpenGL的东西,你可以在那里'画'声音,然后播放.我听说过OpenAL,但它似乎只是一个用于加载和播放声音的库.
当我在D中分配一个对象时,它会被复制吗?
void main() {
auto test = new Test(new Object());
tset.obj;
}
class Test {
public Object obj;
public this(Object ref origObj) {
obj = origObj; // Will this copy origObj into obj, or will origObj and obj point to the same data? (Is this a valid way to pass ownership without copying the object?)
}
}
Run Code Online (Sandbox Code Playgroud) 在D中,每次启动应用程序时,我的垃圾收集器都会崩溃.
Windows模块:
pragma(lib, "user32.lib");
import std.string;
extern(Windows) {
void* CreateWindowExW(uint extendedStyle ,
const char* classname,
const char* title,
uint style,
int x, int y,
int width, int height,
void* parentHandle,
void* menuHandle,
void* moduleInstance,
void* lParam);
}
class Window {
private void* handle;
private string title;
this(string title, const int x, const int y, const int width, const int height) {
this.title = title;
handle = CreateWindowExW(0, null, toStringz(this.title), 0, x, y, width, height, null, null, null, null);
if(handle == …
Run Code Online (Sandbox Code Playgroud) 有没有办法在D中获取当前函数的名称?我正在寻找类似于__FUNCTION__
C++的东西.
我想使用此名称将其传递给Exception.如果(当前)用户所在的当前平台不支持某个功能,则会抛出异常.
D中有没有办法通过指定确切的文件名和路径来加载动态库?我想在专用文件夹中使用动态库实现插件系统.
我正在寻找类似的东西,Runtime.loadLibrary(in char[] name)
而不是名称,它应该采取完整的道路.
如何在D中自动初始化结构的成员数组?
struct MyStruct {
ubyte[] a = {1, 2, 3, 4}; // Will Fail
}
Run Code Online (Sandbox Code Playgroud) 我可以从各种文档中看到XCloseDisplay
返回一个整数,我怀疑这是一个错误代码。
我应该用这个值做什么?是错误代码吗?如果是这样我该如何处理该错误?
我有一个类似联合的类,其成员可能是垃圾,也可能不垃圾,具体取决于同一类中也设置的布尔标志.
显然,当我的课程超出范围时,我不希望破坏垃圾.如何防止类成员被破坏?
我知道这可以用指针和动态分配的内存来实现,但我正在寻找一个更简单的解决方案.
class MyContainer {
bool has_child;
MyChild child;
public:
MyContainer(MyChild child) { this->has_child = true; this->child = child; }
MyContainer() { this->has_child = false; }
~MyContainer() {
if (!this->has_child) {
// What to do here?
}
}
}
Run Code Online (Sandbox Code Playgroud)