我有一个这种形式的文本文件:
1 1
2 2
3 3
#
4 3
5 1
现在我想阅读这个文本文件并计算两个变量num1
和num2
。 num1
计算所有角色的数量,直到#
和num2
计算#
之后所有角色的数量。
到目前为止我的代码:
Graph::Graph(string s) // s is the filename
{
ifstream tgf(s);
string line;
// num1 and num2 are two private member (type int) of class Graph
num1 = 0;
num2 = 0;
if(tgf.is_open())
{
while(getline(tgf, line, '#')) // this should read tgf until '#'
{
num1++;
}
} else
{
cout << "Can´t open textfile!" << endl;
}
}
我不知道如何为我的问题编写代码。
答案 0 :(得分:0)
为什么不简单地逐个字符地阅读
int startNewCount = 0;
char my_character
while (!tgf.eof() )
{
tgf.get(my_character);
if (my_character != '#')
{
startNewCount=1;
}
if (my_character != ' ' && startNewCount==0)
{
num1++
}
else if(my_character != ' ' && startNewCount==1)
{
num2++
}
}
答案 1 :(得分:0)
我建议您在继续实际实施之前简要阅读documentation。
我建议使用first overload(也存储字符)来检查你是否正在迭代正确的整数。
Graph::Graph(string s) // s is the filename
{
ifstream tgf(s);
string line;
// num1 and num2 are two private member (type int) of class Graph
num1 = 0;
num2 = 0;
bool found_del = false;
if(tgf.is_open())
{
while(getline(tgf, line)) // stores # as well
{
if(line == "#") found_del = true;
else{
if(found_del) num1++; else num2++;
}
}
} else
{
cout << "Can´t open textfile!" << endl;
}
}