MAC 环境下 C++中的getline

因为要完成一个将csv文件读入并分析其中数据的作业,不得不用到getline函数。

getline函数是<string>中的函数,用于对输入文件进行读取,并写入相关的变量中。我就把这次作业的程序段贴在这里来帮助我下次回忆如何用getline函数的说。

似乎函数的内容是这样的,getline(*ifstream, string, char)。第一个是输入的文件流,也就是之前的ifstream;第二个是一个string类的字符串,第三个是截止字符。这样写得话,getline就会自动截取该字符前的字符串,正如65行中,我就采用','作为我的截止符号。

getline(*ifstream, string)在Windows下可以到csv文件每行的末端,而在mac下一下就到文件的末端了。

Mac中用getline似乎对空格很敏感的样子。每次使用getline,只能取到空格前一个string串。(卧槽,为啥,串是翘舌,窜是平舌啊!!)

我主要想解决的问题是,如何在mac中使用getline读取到每一行的末尾呢?

采用字符'\r'。

\r 字符是干神马的呢,他叫做运输返回(Carriage Return)字符,告诉光标这一行到末尾啦,该返回咯。

如果用textedit等任意文本编辑器打开csv文件,你就回发现光标在一行内是循环运动的。

所以找到‘\r‘之前的文本就是该行的末尾咯。

那为啥不能用\n呢?

我个人觉得因为csv文件的字符是连续的,用\n的话也会直接到文件末尾去了。 

参考文献:http://stackoverflow.com/questions/7372918/whats-the-use-of-r-escape-sequence

 

posted @ 2013-09-04 12:20  cwss  阅读(917)  评论(1编辑  收藏  举报