我被困在从文件中读取行并将它们存储在动态字符数组中。这是代码。任何帮助将受到高度赞赏。
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);
}
答案 0 :(得分:0)
为了使代码看起来更简单,我会改变这个:
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!
这个用途的用法不清楚。
答案 1 :(得分:0)
我猜你想要这个...
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
}
}