首页 > 其他分享 >代码书写技巧 目录路径"/"代替"\"

代码书写技巧 目录路径"/"代替"\"

时间:2022-12-16 18:00:41浏览次数:33  
标签:读取 技巧 书写 路径 ifstream 斜杠 Linux fileHandle szBuf

前言

      Windows目录路径是\,Linux目录路径是/。因此如果代码书写成

#include <boost\shared_ptr.hpp>

将无法直接迁移到Linux下,直接编译使用,还必须修改为

#include <boost/shared_ptr.hpp>

实际上,/的书写方式在Windows也是被认可的。所以尽量不要使用\,而是使用/,这样子方面移植代码到Linux 环境下

例子

void TestReadFile()
{
char szBuf[256] = { 0 };
std::ifstream fileHandle("E:/doc/Android/Makefile");//可以读取文件
//ifstream fileHandle("E:\doc\Android\Makefile");//读取不到文件
//ifstream fileHandle("E:\\doc\\Android\\Makefile");//可以读取文件
fileHandle.getline(szBuf, 100);
size_t inLen = strlen(szBuf);
}


分析

第一种方案采用和Linux系统一样的斜杠,方便在以后的开发中移植到Linux平台,毕竟头文件include中斜杠的修改比较麻烦。

第三种方法采用双反斜杠,告诉编译器前面的反斜杠不是用来屏蔽转义的,而是实实在在存在的。

第二种错误方案,详细分析:

拆分字符串:

void TestReadFile()
{
char szBuf[256] = { 0 };
char szPathName[256] = { "E:\CloudOS\face\whs.jpg" };

std::ifstream fileHandle(szPathName);
fileHandle.getline(szBuf, 100);
size_t inLen = strlen(szBuf);
}

通过VS单步调试szPathName的实际内容变成:"E:docAndroidMakefile"  编译器认为\是用来禁止转义用的,而没有想到用户实际上是作为反斜杠,因此将其清除,导致读取文件路径失败

标签:读取,技巧,书写,路径,ifstream,斜杠,Linux,fileHandle,szBuf
From: https://blog.51cto.com/fengyuzaitu/5948084

相关文章