比较文件中的字符串行

Comparing lines of strings from a file

本文关键字:字符串 文件 比较      更新时间:2023-10-16

我有一个我读过的文件,我想把每一行当作一个字符串来读,并比较每一行来找到某些关键字,如果我找到了这些关键字,就把这些关键字中的所有内容取出来,并从中生成一个新的字符串。有可能有多个行具有相同的关键字,所以我想创建单独的字符串…

我现在有一些难看的代码,放在这里会很尴尬,谁能告诉我正确的方向,如何做到这一点…

如果你愿意,我可以把我的代码放在这里,但我必须解释很多。

阿古古古古古古古古古古古古古古古古古古古古古古古古古古古古古古古古古古古古古古古古古古古古古古古古古古古古古古

GUU ACA UUG CGC GAU GGG CCG CGA GAC CCG GGU UUA AAG UAG GUG A

UUA CAU UGC GCG M GGC CUC GAG ACC CGG GUU UAA AGU AGG UGA

UGG M AAA UUU GGG CCC AGA GCU CCG GGU AGC GCG UUA CAU UGA

这是我的文本文件的一部分。我想找到'M',然后找到实例:1)UAA, 2) UAG,或3)UGA。让每一个都成为一个单独的字符串,这样我就可以比较它们的长度。我尝试使用赋值操作符,但每次都会打印出相同的字符串。

。我想我要做的就是找到'M'的任何实例,当我找到时,我想把整行变成一个字符串,这样我就可以比较字符串了。

ifstream code_File ("example.txt");   // open text file.
if (code_File.is_open()) {
    while (code_File.good()) {

        getline(code_File,line);    //get the contents of file 
        cout  << line << endl;     // output contents of file on screen.

            found = line.find_first_of('M', 0);               // Finding start code
        if (found != string::npos) {
           code_Assign.assign(line, int(found), 100);        //assign the line to code_Assign and print out string from where I found the start code 'M'.
            cout << endl << "code_Assign: " << code_Assign << endl << endl;

这似乎是grepsedawk标准Posix实用程序的好任务。

如果你想在程序中更快地解析它,考虑使用标准的解析技术,例如使用ANTLR

我根本不清楚你想做什么,然而:

要读取一行并将其放入单个字符串中:使用std::getline

在另一个字符串中查找一个固定字符串,使用std::search;更多的复杂的模式,使用boost::regex(或std::regex,如果你有c++编译器11日)。std::search将返回一个迭代器和两个迭代器可用于构造新字符串。regex解决方案是否可以捕获,这样就可以访问中间的字符串直接(或间接);这在很大程度上取决于模式的复杂程度regex解决方案不工作时,您想要捕获的字符串是以重复的模式)。然而,如果没有更多的信息,它就是

试着准确地说明你的问题;我想你会发现