温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

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

发布时间:2020-08-05 13:12:12 来源:网络 阅读:330 作者:fengyuzaitu 栏目:系统运维

#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[256] = {0};

  ifstream  utffile("E:/doc/Android/Makefile");//OK

//ifstream  utffile("E:\doc\Android\Makefile");//ERROR

//ifstream  utffile("E:\\doc\\Android\\Makefile");//OK

  utffile.getline(utfBuffer, 100);

  size_t inLen = strlen(utfBuffer);

  return 0;

}


总结:

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

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


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

拆分字符串:

  char utfBuffer[256] = {0};

  char szPathName[256] ={"E:\doc\Android\Makefile"};

  ifstream  utffile(szPathName);

  utffile.getline(utfBuffer, 100);

  size_t inLen = strlen(utfBuffer);

return 0;

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


向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI