簡體   English   中英

從文本文件讀取行並將其存儲在C ++中的字符數組中

[英]Reading lines from text file and store in character array in C++

我陷入了從文件中讀取行並將其存儲在動態字符數組中的困境。 這是代碼。 任何幫助將不勝感激。

Input file:  >sequence1.txt 
             WAWAWAWA

程序應忽略以>開頭的行。 它可以,但是提供輸出WWWWWWWW

while(!rrr.eof())
{     
    rrr.get(ch);
    int j;
    if(ch == '>')
    {
        cout<<ch<< "  ignored "<<endl;
        getline(rrr,line);
    }
    else
    {
        getline(rrr,line);
        j= line.length()+1;
        arr= new char[j];
        for(int i=1; i<=j;i++)
        {
           rrr.get(ch);
           arr[i]=ch;
           cout<<arr[i];
        }
        len=j;
    }

    rrr.get(ch);    
}

為了使代碼看起來更簡單,我將對此進行更改:

rrr.get(ch);
int j;
if(ch == '>')
{
    cout<<ch<< "  ignored "<<endl;
    getline(rrr,line);
}
else
{
    getline(rrr,line);
    j= line.length()+1;
    arr= new char[j];
    for(int i=1; i<=j;i++)
    {
       rrr.get(ch);
       arr[i]=ch;
       cout<<arr[i];
    }
    len=j;
}

rrr.get(ch);

對此:

getline(rrr, line);

if(line[0] == '>')
{
    cout<<line[0]<< "  ignored "<<endl;
}
else
{
    len = line.length();
    arr= new char[len];
    for(int i=0; i < len; i++)
    {
       arr[i] = line[i];
       cout << arr[i];
    }
}

即使我不確定為什么還要使用for循環。 而您可以只將行值分配或復制到arr!

這個arr的用途尚不清楚。

我想你想要這個...

vector<string> data;
string line;
while( getline(rrr,line))
{     
    if(line[0] == '>')
        cout << "> ignored " << endl;

    else
     data.push_back(line);

}

然后打印數據...

//////////////////////////////////////////

使用動態數組...

    string line;
    int count = 0; // count lines without '>'
    while( getline(rrr,line))
        if(line[0] != '>')
             ++count;


 // return to beg of file
    rrr.clear();
    rrr.seekg(0, ios::beg);


    char** data;
    data = new char*[count];
    int i = 0;
    while( getline(rrr,line))
    {     
        if(line[0] == '>')
            cout << "> ignored " << endl;

        else {
         data[i] = new char[line.length() + 1];
         for(int _i = 0; _i < line.length() + 1; ++_i)
              data[i][_i] = line[_i];
          ++i; // next row
     }

    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM