c++ - Mac OS X - 获取文件中的行尾

标签 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 上,我现在必须读取一些定义我的文件/行的行尾的符号。如果没有这个技巧,我如何获得哪个符号完成的文件?

最佳答案

全部用 C++ 完成:

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

关于c++ - Mac OS X - 获取文件中的行尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16644364/

相关文章:

c++ - Android ndk编译SoundTouch Library报错

python - 如何在 OS X Leopard 上安装 MySQL 和 Python MySQL 包?或者我如何学习如何使用 OS X 成为网络开发人员?

c - 信号量在 OS X 上不断崩溃

macos - 在 Mojave 上安装 Brew

c# - 文件名有两个反斜杠 C#

java - 这两个java.io.File线程安全问题是否被规避了?

c++ - 检测 boost 测试用例是否失败

c++ - 如何将结构导出到文件,然后内存映射文件?

c++ - 将整数文字初始化为 std::size_t

arrays - 如何在 ruby​​ 中对文件名进行排序?