我使用这个c ++代码来查找windows中某些文件的文件大小(使用visual studio):
(p_findFileData->nFileSizeHigh * MAXDWORD) + p_findFileData->nFileSizeLow);
Run Code Online (Sandbox Code Playgroud)
如果文件大于4gb,这不会给我正确的文件大小.经过一些研究,我试过:
(p_findFileData->nFileSizeHigh * (MAXDWORD+1)) + p_findFileData->nFileSizeLow);
Run Code Online (Sandbox Code Playgroud)
当我读到nfilesizehigh和nfilesizelow是文件大小的64位值的32位时,如果filesize值大于32位,我们将maxdword(在我的情况下是0xffffffff)乘以nfilesizehigh.第二个解决方案也没有用,给我的尺寸比它的尺寸小.我再次试过这个:
ULONGLONG FileSize = (FindFileData.nFileSizeHigh * 4294967296) + FindFileData.nFileSizeLow;
Run Code Online (Sandbox Code Playgroud)
它起作用了.我还使用了另一种解决方案来获取文件大小:
ULONGLONG FileSize = FindFileData.nFileSizeHigh;
FileSize <<= sizeof( FindFileData.nFileSizeHigh ) *8;
FileSize |= FindFileData.nFileSizeLow;
Run Code Online (Sandbox Code Playgroud)
上述解决方案也有效:
我想知道为什么前两个解决方案不起作用,并且如果可能的话也解释最后一个解决方案,因为我想知道代码的内部工作.非常感谢帮助.
我有c#代码,其中我使用命令行运行perl文件并在ac#string中捕获该输出.我想使用正则表达式从该字符串中提取某个单词.我尝试了几种捕获特定单词的方法,但它没有用.
例如:下面的文本是在c#中的字符串中捕获的
CMD.EXE以上面的路径作为当前目录启动.
不支持UNC路径.默认为Windows目录.
初始化.
jsdns jsdnjs wuee uwoqw duwhduwd 9-8 is = COM10
uuwe sodks asjnjx
在上面的代码中我想提取COM10.同样,该值也可以更改为COM12或COM8或COM15.我将始终在文本中使用COM,但后续编号可以更改.
有人可以告诉我如何使用正则表达式.我使用了RegexOptions.Multiline,但我不确定如何去做.此外,如果包含解释,它将是有帮助的.