Mac OS X - 获取文件末尾

时间:2013-05-20 07:10:17

标签: c++ macos file

我尝试在Mac OS X上打开并读取文件:

FILE * pFile = fopen (path_.c_str() , "r");
if (pFile == NULL)
{
   perror ("Error opening file");
}
else
{
   char line [buffer_size]={0};
   size_t length=0;
   std::vector<unsigned> nodes;
   while ((line[length++] = fgetc (pFile)) != EOF )
   {
      printf("%d",line[length-1]);
      if (line[length-1] == '\r'||line[length-1] == '\n'
#ifdef __APPLE__
    ||line[length-1] == '$'
#endif
      )
{
   line[length-1]=0;
   unsigned number = 0;
   for(unsigned i=0;i<length;++i)
   {
      if(isdigit(line[i]))
   {
      number = number *10+line[i]-'0';
   }
else
   {
      nodes.push_back(number);
      number = 0;
   }
}
      memset(&line,0,buffer_size);
      length=0;
}
}
fclose (pFile);

我使用#ifdef __APPLE__定义,这段代码在Linux上完美运行,但在Mac OS X上我现在必须阅读一些符号来定义文件/行的行尾。如果没有这个技巧,我怎样才能得到哪个符号的文件?

2 个答案:

答案 0 :(得分:1)

在C ++中完成所有工作:

unsigned number;
std::vector<unsigned> nodes;
std::ifstream file(path_.c_str());
while (file >> number)
    nodes.push_back(number);

答案 1 :(得分:0)

正如你所看到的here,OSX新行字符现在是\n,不用担心。

因此,您不必制作任何Apple特定代码,除非您想支持Mac OS版本&lt; = 9