[英]Mac OS X - get end of line in 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__
define,此代碼在Linux上運行完美,但是在Mac OS XI上現在必須讀取一些符號,該符號定義了文件/行的行尾。 沒有這個技巧,如何獲得哪個符號完成文件?
在C ++中完成所有操作:
unsigned number;
std::vector<unsigned> nodes;
std::ifstream file(path_.c_str());
while (file >> number)
nodes.push_back(number);
正如你可以看到它在這里 ,OSX換行符現在\\n
,不用擔心。
因此,除非您要支持Mac OS版本<= 9 ,否則無需編寫任何Apple特定代碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.