Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/140.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在C++; 我对C++是新的,需要一些帮助,我有一些代码(这主要是从我发现的其他代码中获取)。我试图读入一个FASTA序列文件,然后在该文件中搜索特定的图案,然后将结果输出到另一个文件中。我可以打开文件,搜索文件,并输出主题所在的行。我还得到了序列号和字符位置_C++_String_Search_Fasta - Fatal编程技术网

在C++; 我对C++是新的,需要一些帮助,我有一些代码(这主要是从我发现的其他代码中获取)。我试图读入一个FASTA序列文件,然后在该文件中搜索特定的图案,然后将结果输出到另一个文件中。我可以打开文件,搜索文件,并输出主题所在的行。我还得到了序列号和字符位置

在C++; 我对C++是新的,需要一些帮助,我有一些代码(这主要是从我发现的其他代码中获取)。我试图读入一个FASTA序列文件,然后在该文件中搜索特定的图案,然后将结果输出到另一个文件中。我可以打开文件,搜索文件,并输出主题所在的行。我还得到了序列号和字符位置,c++,string,search,fasta,C++,String,Search,Fasta,但我想要的是整个序列,而不仅仅是线条。我认为必须有一种方法来运行一个循环,以打印出>之间的所有内容,这标志着每个序列的开始。我只是没能做到这一点,如果能得到任何帮助,我将不胜感激 下面是我将要搜索的文件的一个示例: 因此,如果我搜索“PAIVGGDFHLSETIAIIRYLA”,我会想要从第一个>(我也想包括这个)到下一个>(不想包括这个)。当我发布这篇文章时,>不会出现,但它们会出现在FB之前 >FBpp0087549 MSKPIRFYYDLLSPIARGLWIGLKFSNSPVEYCP

但我想要的是整个序列,而不仅仅是线条。我认为必须有一种方法来运行一个循环,以打印出>之间的所有内容,这标志着每个序列的开始。我只是没能做到这一点,如果能得到任何帮助,我将不胜感激

下面是我将要搜索的文件的一个示例:

因此,如果我搜索“PAIVGGDFHLSETIAIIRYLA”,我会想要从第一个>(我也想包括这个)到下一个>(不想包括这个)。当我发布这篇文章时,>不会出现,但它们会出现在FB之前

>FBpp0087549
MSKPIRFYYDLLSPIARGLWIGLKFSNSPVEYCPIALRKFEQLTDEYKKI
NRFQKV**PAIVGGDFHLSETIAIIRYLA**DKGQFDEKLYPKTLENRARVDEF
LEWQHLNIRLACSMYFRDAWLFPMNGIAPKPKPEQIQALIEGVENNLGLL
ERLWLENDFLVGKNLTMADILGSSEINQLRLCQYRVDEKKFPKVVKWLER
VRVSANPYHDEGLTFIDRKSKQSTAAKL

>FBpp0086857
MSQPKPILYYDERSPPVRSCLMLIKLLDIDVELRFVNLFKGEQFQKDFLA
LNPQHSVPTLVHGDLVLTDSHAILIHLAEKFDEGGSLWPQEHAERMKVLN
LLLFECSFLFRRDSDFMSATVRQGFANVDVAHHERKLTEAYIIMERYLEN
SDFMAGPQLTLADLSIVTTLSTVNLMFPLSQFPRLRRWFTAMQQLDAYEA
NCSGLEKLRQTMESVGSFQFPSSSAVVTEKVE
以下是我正在使用的代码:

#include <fstream>
#include <string>
#include <iostream>
#include <ctime>
#include <stdlib.h>

using namespace std;

int main()
{
    int counter = 0;

    string filename = "dna.txt";
    ifstream gst(filename.c_str());

    ofstream outfile;
    outfile.open("dnatwo.txt");

    outfile.setf(ios::fixed);
    outfile.setf(ios::showpoint);
    //outfile.precision(100);


    if (gst)
    {
        string search;
        string line;
        string number;
        gst >> number;

        search.resize(25);

        cout << "Enter the search criteria: ";
        cin >> search;

        while (getline(gst, line))
        {
            if (number == search);
            counter = counter += 1;

            if (line.find(search) != std::string::npos)
            {
                //outfile << line << endl;
            }
            std::size_t found = line.find(search);
            if (found != std::string::npos)
                outfile << "found at line: " << counter << " " << "Position: " << found << " " << line
                << "\r\n" << endl;

        }
    }
    else

    {
        cerr << "Cannot open file " << filename << endl;
        return -1;
    }

    return 0;
}
#包括
#包括
#包括
#包括
#包括
使用名称空间std;
int main()
{
int计数器=0;
字符串filename=“dna.txt”;
ifstream gst(filename.c_str());
出流孔的直径;
outfile.open(“dnatwo.txt”);
outfile.setf(ios::fixed);
setf(ios::showpoint);
//输出文件精度(100);
if(商品及服务税)
{
字符串搜索;
弦线;
字符串编号;
gst>>数量;
搜索。调整大小(25);
cout>搜索;
while(getline(商品及服务税,第行))
{
如果(数字==搜索);
计数器=计数器+=1;
if(line.find(search)!=std::string::npos)
{

//outfile如果'new'是您的ifstream变量的名称,您不应该使用该名称,因为它是一个保留字…实际上不是我使用的名称,但我只是将其更改为'gst'。谢谢。您知道如何打印整个序列吗?除非您真的需要自己执行此操作,否则使用
awk
,例如:
gawk会更容易“BEGIN{RS=\”\“FS=\”\n\”}/PAIVGGDFHLSETIAIIRYLA/"fasta.txt
@JerryCoffin,谢谢你的帮助。我第一次看到“awk”。当我在一个更大的文件上运行它时,我注意到一个问题,它只报告第一次出现的情况。有没有办法让它报告所有这些情况?还有,有没有可能在我的代码中添加类似的内容,这样我也可以让它显示行位置?谢谢