这个字符串怎么操作?
我调用API函数获取当前的系统用户名,得到了一个string类型的字符串,可是后面却跟了一串多余的 "0\0\0\0\0\0\0\ ",我以为是空格,可是用string.Trim()方法怎么也删不掉,请问我得到的是字符串吗?如果是为什么不能删除后面的东西呢?下面是我的代码
API函数调用定义:
[DllImport( "Advapi32.dll ", EntryPoint = "GetUserName ", ExactSpelling = false, SetLastError = true)]
static extern bool GetUserName([MarshalAs(UnmanagedType.LPArray)] byte[] lpBuffer, [MarshalAs(UnmanagedType.LPArray)] Int32[] nSize);
这是函数调用:
byte[] str = new byte[20];
Int32[] len = new Int32[1];
len[0] = 20;
GetUserName(str, len);
string username = System.Text.Encoding.ASCII.GetString(str).Trim();
调试的时候 username显示的值为 "chen.zh\0\0\0\0\0\0\0\0\0\0\0\0\0 "
请问是只怎么回事啊,我厂只要前面的chen.zh就好.
------解决方案--------------------[DllImport( "advapi32.dll ")]
public static extern bool GetUserName(StringBuilder lpBuffer, ref int nSize);
private void button1_Click(object sender, EventArgs e)
{
StringBuilder vBuffer = new StringBuilder(256);
int vSize = vBuffer.Capacity;
GetUserName(vBuffer, ref vSize);
Text = vBuffer.ToString();
//Text = Environment.UserName; //推荐用.NET的方法
}