2 mangguo0824 mangguo0824 于 2016.02.05 23:06 提问

vc逐行读取文本行并进行比较?

文本文件中的一行与其他行的内容有的完全相同,有的不同,如相同就当做是一个内容再输出,如不同,也作为一个输出。例如:

111.222.333.444.555
111.222.333.444.555
111.222.333.444.555
111.222.333.444.555
222.333.444.555.666
111.333.444.555.666

逐行读取并比较后,实际需要输出的结果是
111.222.333.444.555
222.333.444.555.666
111.333.444.555.666
VC写的代码,现在逐行读取已经实现,用CFile 当做字符串读取的,while循环。但是对于怎么比较每一行,还没有好的思路,求教大侠了。。

4个回答

caozhy
caozhy   Ds   Rxr 2016.02.05 23:09

这种问题,最好贴出你现有的代码,这样直接帮你改好了,你直接就能用。

比如说你用的是cstring string还是char数组。这个具体写出来代码都不同。
cstring用compare
string直接用等号
char用strcmp

mangguo0824
mangguo0824 其实本质上就是去重的问题
2 年多之前 回复
mangguo0824
mangguo0824 结果是以文本存储,一行一个内容,以回车换行结束,我初步的想法是以字符串读取后进行求取HASH的运算,再进行比较,思路有了但是还是不知道具体怎么做,或者有没有更好的方法?
2 年多之前 回复
mangguo0824
mangguo0824 就是这样的字段,可能有很多行,但是内容不同的可能就是三四种,然后通过比较挑出来写入另外一个文本中,
2 年多之前 回复
mangguo0824
mangguo0824 回复caozhy: 192.168.11.1,192.168.11.2,255.255.255.252,172.16.32.22,172.16.23.32,0.0.0.0 192.168.1.1,192.168.1.2,255.255.255.252,172.16.22.12,172.16.23.12,0.0.0.0 192.168.11.1,192.168.11.2,255.255.255.252,172.16.32.22,172.16.23.32,0.0.0.0 192.168.1.1,192.168.1.2,255.255.255.252,172.16.22.12,172.16.23.12,0.0.0.0
2 年多之前 回复
mangguo0824
mangguo0824 回复caozhy: 192.168.1.1,192.168.1.2,255.255.255.252,172.16.22.12,172.16.23.12,0.0.0.0 192.168.11.1,192.168.11.2,255.255.255.252,172.16.32.22,172.16.23.32,0.0.0.0 192.168.12.1,192.168.12.2,255.255.255.252,172.16.42.22,172.16.23.42,0.0.0.0 192.168.1.1,192.168.1.2,255.255.255.252,172.16.22.12,172.16.23.12,0.0.0.0
2 年多之前 回复
caozhy
caozhy 回复mangguo0824: 最好再给出1.txt的内容(如果比较长,可以贴出一段),并且说明你要怎么做。期待什么样的结果。
2 年多之前 回复
mangguo0824
mangguo0824 CFile file; file.Open("D:\1.TXT",CFile::modeReadWrite|CFile::modeCreat); CString strline; while(file.ReadString(strline)) { //读取每一行并相互比较 } file.write();
2 年多之前 回复
mangguo0824
mangguo0824   2016.02.06 19:06

CFile file;
file.Open("D:\1.TXT",CFile::modeReadWrite|CFile::modeCreat);
CString strline;
while(file.ReadString(strline))
{

//读取每一行并相互比较

}
file.write();

91program
91program   Ds   Rxr 2016.02.06 09:28

建议你先确认读文件中每一行的内容是否正确,通过 DEBUG 模式或者 TRACE 输出都可以。
如果通过 DEBUG 或者 TRACE 看到第一行的内容都正确后,再实现比较的过程:记录上一行的内容,在读取当前行的内容后,与上一行做字符串比较。
如果相同,则不处理;如果不相同,则处理、并修改记录上一行内容的变量的值。

91program
91program   Ds   Rxr 2016.02.06 09:27

建议你先确认读文件中每一行的内容是否正确,通过 DEBUG 模式或者 TRACE 输出都可以。
如果通过 DEBUG 或者 TRACE 看到第一行的内容都正确后,再实现比较的过程:记录上一行的内容,在读取当前行的内容后,与上一行做字符串比较。
如果相同,则不处理;如果不相同,则处理、并修改记录上一行内容的变量的值。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
linux【Shell脚本】逐行处理文本文件
经常会对文体文件进行逐行处理,在Shell里面如何获取每行数据,然后处理该行数据,最后读取下一行数据,循环处理.有多种解决方法如下: 1.通过read命令完成. read命令接收标准输入,或其他文件描述符的输入,得到输入后,read命令将数据放入一个标准变量中. 利用read读取文件时,每次调用read命令都会读取文件中的"一行"文本. 当文件没有可读的行时,read命令将
两个 文本文件 逐行比较 文件内容 找出独有文本行
两个文本文件逐行比较,找出比较文件中独有的文本行,并将它加入原文本文件中。
python读取TXT文件并逐行写入另外一个TXT文件
def TXTRead_Writeline(): #读取文件 ms = open("文件路径和全名") #逐行写入 for line in ms.readlines(): with open("要写入的文件路径和文件名","a") as mon: mon.write(line) 例:读取C盘下面test文件夹下的ba
VC6.0逐行读取记录文件文本文件CStdioFile
void CLogfile_analysisDlg::OnReadfile() {m_Grid.DeleteAllItems();CString strText = "";CString szLine = "";CString strText1="Errors are captured";CStdioFile file; //CStdioFile逐行读取类int count=0;file.Open
批处理:如何逐行读取txt中每行的信息并显示
在实际的应用过程中,常常会在windows下批量的运行exe的一些可执行程序这时候可以采用一些批处理来完成如下所示: @echo off & setlocal EnableDelayedExpansion set j=0 for /f "delims=""" %%i in (charlist_all_22.txt) do ( set /lineStr j+=1 set con!j!=%%i ca
逐行读取文件内容的三种方法
方法一:采用Getline函数 ifstream in("1.txt"); string line; int i = 0; if(in) // 有该文件 { while (getline (in, line)) // line中不包括每行的换行符 { cout << line<<" "<<i++<<endl; } }
Python四种逐行读取文件内容的方法
下面是四种Python逐行读取文件内容的方法, 并分析了各种方法的优缺点及应用场景,以下代码在python3中测试通过, python2中运行部分代码已注释,稍加修改即可。 方法一:readline函数 1 2 3 4 5 6 7 8 #-*- coding: UTF-8 -*-  f = open("/
awk逐行比较两个文件的内容
awk内置变量 awk有许多内置变量用来设置环境信息,这些变量可以被改变,下面给出了最常用的一些变量。 Shell之awk命令" style="margin:0px; padding:0px; border:none!important; list-style:none"> ARGC 命令行参数个数 ARGV 命令行参数排列
VC 逐行读写TXT文件
用流在写日志时,发现如果把"\r\n"直接写在字符串的尾部,则会造成乱码,其中的原因网上有很多说明,主要是标准库与WINDOWS的回车换行的机制略有差别。但只要写到另一行重起就没有 用流在写日志时,发现如果把"\r\n"直接写在字符串的尾部,则会造成乱码,其中的原因网上有很多说明,主要是标准库与WINDOWS的回车换行的机制略有差别。但只要写到另一行重起就没有问题了。
文本行识别基础概念之补充:HMM&CTC
关于HMM: 1.首先我在知乎上找到了一个非常通俗易懂的关于HMM的解释:如何用简单易懂的例子解释隐马尔可夫模型? - Yang Eninala的回答 - 知乎https://www.zhihu.com/question/20962240/answer/33438846 关于CTC: 我找来了Alex在06年发表的Connectionist Temporal Classi