dlang如何将一个char[]和trim转换成字符串?
dlang how to convert and trim a char[] into a string?
我正在尝试将缓冲区转换为字符串,但显然有一个 space 我无法删除
我应该如何剥离这个 space 并将 char[] 转换为字符串容器
string getClass(HWND hwnd=NULL){
char[100] str;
GetClassNameA(hwnd, str.ptr, str.length);
writeln(str.dup.strip,'"'); //nothing is stripped, str is printed as 100 characters
writeln(str[99]=='[=11=]'); //false
writeln(str[99]==' '); //false
writeln(str.dup[99]=='[=11=]'); //false
writeln(str.dup[99]==' '); //false
writeln(str.dup.strip[99]=='[=11=]'); //false
writeln(str.dup.strip[99]==' '); //false
return to!string(str).strip; //same nothing is stripped
}
您需要以正确的长度对缓冲区进行切片。 GetClassName
returns 字符串的长度所以做一些像
char[100] buffer;
auto recv = GetClassNameA(hwnd, buffer.ptr, buffer.length);
if(recv == 0) throw new Exception("failed");
char[] str = buffer[0 .. recv];
// now you can work with str
我正在尝试将缓冲区转换为字符串,但显然有一个 space 我无法删除
我应该如何剥离这个 space 并将 char[] 转换为字符串容器
string getClass(HWND hwnd=NULL){
char[100] str;
GetClassNameA(hwnd, str.ptr, str.length);
writeln(str.dup.strip,'"'); //nothing is stripped, str is printed as 100 characters
writeln(str[99]=='[=11=]'); //false
writeln(str[99]==' '); //false
writeln(str.dup[99]=='[=11=]'); //false
writeln(str.dup[99]==' '); //false
writeln(str.dup.strip[99]=='[=11=]'); //false
writeln(str.dup.strip[99]==' '); //false
return to!string(str).strip; //same nothing is stripped
}
您需要以正确的长度对缓冲区进行切片。 GetClassName
returns 字符串的长度所以做一些像
char[100] buffer;
auto recv = GetClassNameA(hwnd, buffer.ptr, buffer.length);
if(recv == 0) throw new Exception("failed");
char[] str = buffer[0 .. recv];
// now you can work with str