[英]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.