溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

windows目錄\在實際開發(fā)中使用/代替

發(fā)布時間:2020-08-05 13:12:12 來源:網(wǎng)絡(luò) 閱讀:330 作者:fengyuzaitu 欄目:系統(tǒng)運維

#include <boost\shared_ptr.hpp>盡量不要使用\,而是使用/,這樣子方面移植代碼到Linux 環(huán)境下

代碼如下:

#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;

}


總結(jié):

第一種方案采用和Unix系統(tǒng)一樣的斜杠,方便在以后的開發(fā)中移植到Linux平臺,畢竟頭文件include中斜杠的修改比較麻煩。

第三種方法采用雙反斜杠,告訴編譯器前面的反斜杠不是用來屏蔽轉(zhuǎn)義的,而是實實在在存在的。


第二種錯誤方案,詳細分析:

拆分字符串:

  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;

通過單步調(diào)試szPathName的實際內(nèi)容變成:"E:docAndroidMakefile"  編譯器認(rèn)為\是用來禁止轉(zhuǎn)義用的,而沒有想到用戶實際上是作為反斜杠,因此將其清除,導(dǎo)致讀取文件路徑失敗


向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI