我在我的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