1

所以我有两个填充的字符串,但现在我希望它们显示并且 Trim() 似乎不想这样做。

String devicename = "".PadRight(100);

String deviceversion = "".PadRight(100);

bool isDeviceReady = capGetDriverDescriptionA(i, ref devicename, 100, ref deviceversion, 100);

后来我使用如下字符串:

Messagebox.show("Device Name="+devicename.Trim()+" , Device Version="+deviceversion.Trim());

显示的都是“ Device Name=name of the device

想法?

4

3 回答 3

2

你为什么要填充字符串?看起来你只是用空格填充字符串,这些空格稍后会被内容替换,但从你的问题来看,我不明白为什么这是必要的。只是有什么问题:

String devicename = "";
String deviceversion = "";

bool isDeviceReady = capGetDriverDescriptionA(i, ref devicename, 100, ref deviceversion, 100);
于 2012-05-15T21:45:21.380 回答
1

您可以尝试在调用返回零终止字符串的 API 函数时使用StringBuilder而不是。string您得到的行为可能源于 API 在字符串末尾写入零值(以终止它),而 .NET 将其视为包含零值的普通字符串。

或者,看看这个讨论,它建议用[MarshalAs(UnmanagedType.LPWSTR)]属性注释参数。然后 PInovke 机制应该在最后自动处理零值。

于 2012-05-15T21:49:51.470 回答
0

最后,这很简单。Tomas Petrick 走在了正确的轨道上。返回的字符串是一个以空字符结尾(也称为以零结尾)的字符串。然后我只需要从字符串中删除空终止符。

devicename = devicename.trim('\0');
于 2012-05-21T21:40:58.950 回答