c++;wchar数组到c# 我不懂C++,我必须把一些代码塞入C。我已经设法做了一些位,但我真的不知道如何转换一些行,所以我在这里寻求帮助 这是C++代码: WCHAR wsSerial[MAX_PATH]={'\0'}; WCHAR wsS2[MAX_PATH]={'\0'}; wcscpy_s(wsSerial, MAX_PATH, m_strSerial); wcscpy_s(wsS2,MAX_PATH,wsSerial+8); wsS2[8]=NULL; ULONG ulCode2 = wcstoul(wsS2, NULL,10);
这就是我在C#中的内容: 所以我有两个问题: <> LS>是一个C++数组,但在C语言中我不需要这个数组,是吗?我的意思是,它所做的只是存储一个大的数字,然后再转换成一个数值,对吗c++;wchar数组到c# 我不懂C++,我必须把一些代码塞入C。我已经设法做了一些位,但我真的不知道如何转换一些行,所以我在这里寻求帮助 这是C++代码: WCHAR wsSerial[MAX_PATH]={'\0'}; WCHAR wsS2[MAX_PATH]={'\0'}; wcscpy_s(wsSerial, MAX_PATH, m_strSerial); wcscpy_s(wsS2,MAX_PATH,wsSerial+8); wsS2[8]=NULL; ULONG ulCode2 = wcstoul(wsS2, NULL,10);,c#,c++,language-comparisons,C#,C++,Language Comparisons,这就是我在C#中的内容: 所以我有两个问题: LS>是一个C++数组,但在C语言中我不需要这个数组,是吗?我的意思是,它所做的只是存储一个大的数字,然后再转换成一个数值,对吗 这到底是干什么的?wcscpy_s(wsS2,最大路径,wsSerial+8)。+8把我甩了 在C语言中,字符串只是一个包含“字符串”的连续区域,以特殊字符结尾。换句话说,一个字符数组。(或wchar\u t用于宽字符串。) 在C#(和C++)中,这是不需要的,因为它有自己特殊的字符串类型,在幕后处理数组内容 关于+8
在C语言中,字符串只是一个包含“字符串”的连续区域,以特殊字符结尾。换句话说,一个字符数组。(或
wchar\u t
用于宽字符串。)
在C#(和C++)中,这是不需要的,因为它有自己特殊的字符串
类型,在幕后处理数组内容
关于
+8
这件事,它只是在复制时跳过wsSerial
的前八个字符。要理解这一点,您应该阅读有关“指针算术”的内容。看起来您几乎完全做到了这一点,但是调用
wsSerial.Substring()
应该是8,第二个应该是MAX_PATH减去8。如下所示:
string wsSerial = mSerial;
string wsS2 = wsSerial.Substring(8, 8);
long ulCode2 = long.Parse(wsS2);
实际上,在C代码中,OP是在8个字符后终止的,因此长度应该是8。不,原始指针是在源指针中添加8,因此开始复制8个字符。是的,但请查看下一个源代码行。Blimey。所以我们正在帮助转录看起来可疑的坏代码!
string wsSerial = mSerial;
string wsS2 = wsSerial.Substring(8, 8);
long ulCode2 = long.Parse(wsS2);