如何从包含符号,数字和字母的以下文本文件中读取整数?
我有以下文本文件
@
100:20 ;
20:40 ;
#
@
50:30 ;
#
@
10:21:37 ;
51:23 ;
22:44 ;
#
我尝试过以下代码:
int main()
{
std::ifstream myfile("10.txt", std::ios_base::in);
int a;
while (myfile >> a)
{
std::cout<< a;
}
return 0;
}
和
void main()
{
std::ifstream myfile("10.txt", std::ios_base::in);
std::string line;
while (std::getline(infile, line))
{
std::istringstream iss(line);
int n;
while (iss >> n)
{
std::cout << n ;
}
}
}
我得到的只是int变量的垃圾值(如果我初始化它的初始值)
如何解决这个问题?
答案 0 :(得分:2)
您可以尝试将每一行拆分为由冒号字符分隔的单独标记:
int main()
{
std::ifstream myfile("10.txt", std::ios_base::in);
std::string line;
while (std::getline(myfile, line))
{
std::istringstream iss(line);
std::string token;
while (std::getline(iss, token, ':'))
{
std::istringstream tss(token);
int n;
while (tss >> n)
{
std::cout << n << std::endl;
}
}
}
return 0;
}
这应该打印:
100
20
20
40
50
30
10
21
37
51
23
22
44
根据comment,我建议使用更强大的解析算法来尊重文件的独特结构。
答案 1 :(得分:0)
尝试一个接一个地跳过坏人物
类似的东西:
while (!in.eof())
{
int a;
in >> a;
if (!in) // not an int
{
in.clear(); // clear error status
in.ignore(1); // skip one char at input
}
else
{
cout << a;
}
}