我在我的Mac上創建了一些.txt文件(起初並不認爲這很重要,但是...),以便我可以在我製作的應用程序中讀取它們(不幸的是)在另一臺計算機上的Visual Studio。他們基本都是文件充滿了記錄,並在頂部,例如每行的條目數:在Windows中讀取/讀取文件的問題
2
int int
age name
9 Bob
34 Mary
12 Jim
...
在代碼中,我原本只是做(和測試成功)在Mac上,我試圖讀取這個文件和類似的:
Table TableFromFile(string _filename){ //For a database system
ifstream infile;
infile.open(_filename.c_str());
if(!infile){
cerr << "File " << _filename << " could not be opened.";
exit(1);
}
//Determine number attributes (columns) in table,
//which is number on first line of input file
std::string num;
getline(infile, num);
int numEntries = atoi(num.c_str());
...
...
總之,這會導致崩潰!當我看着它的時候,我發現了一些有趣的「錯誤閱讀字符串的問題」的問題,並發現numEntries
正在得到一些瘋狂的消極垃圾值。這似乎是由於從第一行讀取的「num」實際上以「ÿþ2」出現的事實引起的。
從一個小小的研究,似乎這些奇怪的字符被格式化的東西......也許統一字符編碼/ Mac的具體點嗎?在任何情況下,它們都是一個問題,我想知道是否有一種快速簡單的方法可以使我在Mac上創建的文本文件在Windows中合作並運行,就像它們在Mac終端中一樣。我嘗試連接到一臺UNIX機器,在那裏放置一個txt文件,在其上運行unix2dos,然後放回到VS中,但無濟於事......仍然是這些行開頭的符號!我應該在Windows中重新制作輸入文件嗎?我很驚訝地發現,你看到的並不總是你在跨平臺文件中的角色......但我想是一個很好的教訓。
的字節在文件的開頭是一個Unicode [字節順序標記] (http://en.wikipedia.org/wiki/Byte_order_mark),表示文本文件以UTF-16(LE)編碼。你是如何創建文本文件的?用文本編輯器?你的項目中是否需要Unicode功能? – nwellnhof 2013-02-28 11:03:48