c++ getlinefstream 问题?

文件指针位置在c++中的用法:

打开com.txt效果如下:

上面仅仅是将文本写入文件,并没有读取出来

以下为读取文件的一种方法:将文件每行内容存储到字符串中,再输出字符串

这个方法读取的文件所有字符都一起显示,不会分行这里字母z显示两次,是正常的因为在输出文件最后一个字母z之后,又输出了┅次(可以仔细考虑程序代码)

很显然,根据以上程序利用循环,可以逐行读取整个文件内容

以上程序的设计思路没有问题,但在實际操作的时候会发现统计出的行数与实际不符原因在于ReadFile.getline(line,512,'\n')这一句:当一行字符超过512或遇到回车之后,行数自动加1.如果换行符在新的一行返回的结果会比实际多1;如果不在新的一行,返回结果与实际相符可以修改如下:

四、读取文件数据到数组

例:丽丽战三王五小明空三第一佽一次性读出(丽丽战三王五)依次读(小明空三)。不要网上的答案因为网上的有错,求大侠指教... 例: 丽丽 战三 王五
第一次一次性读出(丽丽 战三 王五),依次读( 小明 空三)
不要网上的答案,因为网上的有错求大侠指教。

可以使用C++的库函数getline实现

getline会生成一个包含一串从输入流读入的字符的字符串,直到以下情况发生会导致生成的此字符串结束

2)遇到函数指定的结束符;

3)输入达到最大限度。

num:最多读取num个字符即之前所说的最大限度。

delim:结束符当遇到指定的结束符时将结束输入。在第一种重载中结束符为\n,即遇到换行结束

所以要实现整行读取,使用第一种重载就可以了示例代码如下:

 

我要回帖

更多关于 c++ getline 的文章

 

随机推荐