云深处 发表于 2018-6-18 11:52:44

windows目录\在实际开发中使用/代替

  #include <boost\shared_ptr.hpp>尽量不要使用\,而是使用/,这样子方面移植代码到Linux 环境下
  代码如下:
  #include "stdafx.h"
  #include <iostream>
  #include <fstream>
  #include <string>
  using namespace std;
  int _tmain(int argc, _TCHAR* argv[])
  {
  char utfBuffer = {0};
  ifstreamutffile("E:/doc/Android/Makefile");//OK
  //ifstreamutffile("E:\doc\Android\Makefile");//ERROR
  //ifstreamutffile("E:\\doc\\Android\\Makefile");//OK
  utffile.getline(utfBuffer, 100);

  >  return 0;
  }
  总结:
  第一种方案采用和Unix系统一样的斜杠,方便在以后的开发中移植到Linux平台,毕竟头文件include中斜杠的修改比较麻烦。
  第三种方法采用双反斜杠,告诉编译器前面的反斜杠不是用来屏蔽转义的,而是实实在在存在的。
  第二种错误方案,详细分析:
  拆分字符串:
  char utfBuffer = {0};
  char szPathName ={"E:\doc\Android\Makefile"};
  ifstreamutffile(szPathName);
  utffile.getline(utfBuffer, 100);

  >  return 0;
  通过单步调试szPathName的实际内容变成:"E:docAndroidMakefile"编译器认为\是用来禁止转义用的,而没有想到用户实际上是作为反斜杠,因此将其清除,导致读取文件路径失败
页: [1]
查看完整版本: windows目录\在实际开发中使用/代替