Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/152.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何使用C+跨平台检查操作系统版本+;?_C++_String_Operating System - Fatal编程技术网

C++ 如何使用C+跨平台检查操作系统版本+;?

C++ 如何使用C+跨平台检查操作系统版本+;?,c++,string,operating-system,C++,String,Operating System,嗯,我认为这个问题相当客观。那么,到底有没有办法呢 实际上,我需要检查操作系统的版本,因为我想从字符串中获取目录: "directory/file.ext" 或 因此,我根据“\”或“/”分割其中一个字符串,这取决于我正在处理的操作系统 我对C++非常陌生,我不知道从路径字符串中获取目录的另一种方法。< /P> 我可以用C#很好地做到这一点,这将是我最后的选择 最好的问候和感谢提前 实际上,你不需要这样做。POSIX样式“/”可以很好地用作目录分隔符,即使在Win32系统上也是如此(试试看)

嗯,我认为这个问题相当客观。那么,到底有没有办法呢

实际上,我需要检查操作系统的版本,因为我想从字符串中获取目录:

"directory/file.ext"

因此,我根据“\”或“/”分割其中一个字符串,这取决于我正在处理的操作系统

我对C++非常陌生,我不知道从路径字符串中获取目录的另一种方法。< /P> 我可以用C#很好地做到这一点,这将是我最后的选择


最好的问候和感谢提前

实际上,你不需要这样做。POSIX样式“/”可以很好地用作目录分隔符,即使在Win32系统上也是如此(试试看)

也就是说,其他文件系统操作是特定于平台的(例如,驱动器号)

Boost文件系统库是一个很好的选择—为此编写代码,它将为您处理平台细节:

其他跨平台C++框架,如QT,具有相似的功能。


您可以在此处深入了解更多详细信息:)

您可以使用
#ifdef WIN32
来确定您是否在Windows上。即使在64位Windows上也可以这样做。

您可以使用Qt,它将为您处理所有跨平台的内容。即使是字符串拆分?我不这么认为。。。在Windows上我会得到一个“\”作为输入,在Linux上我会得到一个“/”作为输入……我明白了——如果你正在解析程序中使用的路径,而没有使用像Boost文件系统这样的路径规范化库,那么你要么需要检查两者,要么像Miguel建议的那样使用#ifdef WIN32。在编译时这样做是很好的,因为C++的二进制for Windows不会在Linux上运行(除非通过酒或仿真器,在这种情况下,“\”路径很好)。是的,我在发表评论后想到了这个…很抱歉这将检查编译时。。。我想要一个运行时指令。。。很像C上的Environment.OSVersion,为什么?因为你不能一次构建并部署到Windows和linux,除非你使用的是Wine,它仍然需要Windows风格的路径…是的,我在发表评论后考虑过这个问题。。。很抱歉
"directory\file.ext"