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

 

转载于:https://www.cnblogs.com/unistation/p/3300749.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值