我在我的 Mac 上创建了一些 .txt 文件(起初并不认为这很重要,但是......)以便我可以在我正在(不幸的是)另一台计算机上的 Visual Studio 中制作的应用程序中读取它们。它们基本上是充满记录的文件,每行的条目数在顶部,例如:
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”,实际上是“ÿþ2”。
通过一些研究,似乎这些奇怪的字符正在格式化......也许是 unicode/Mac 特定的?无论如何,它们都是一个问题,我想知道是否有一种快速简便的方法可以让我在 Mac 上创建的文本文件像在 Mac 终端中一样在 Windows 中协作和运行。我尝试连接到一台 UNIX 机器,将一个 txt 文件放在那里,在其上运行 unix2dos,然后放回 VS,但无济于事……仍然是行首的那些符号!我应该在 Windows 中重新输入文件吗?我很惊讶地发现,当涉及到跨平台文件中的字符时,您所看到的并不总是您所得到的……但我想这是一个很好的教训。