1U = 1.2A
1U = 2.3B
1U = 3.4C
1U = 4.5D
1U = 5.6E
1U = 6.7F
1U = 7.8G
上面的代码是输入。有没有办法只从每一行中提取数字?例如,在第一行中,我想要的唯一值是1.2,而不是“1U =”或它之后的A.我尝试使用常规cin和getline(),但是它们检测到一个字符串,因此无法接收任何输入。我也试过使用cin.ignore,但我相信我错误地使用了它。这是我到目前为止:
double temp;
cin.ignore(numeric_limits<streamsize>::max(), '\n');
cin >> temp;
cin.ignore(numeric_limits<streamsize>::max(), '\n');
将忽略整行。但
cin.ignore(numeric_limits<streamsize>::max(), '=');
将忽略所有内容= =
1U = 1.2A
1U = 2.3B
1U = 3.4C
会成为
1.2A
1U = 2.3B
1U = 3.4C
现在你可以
cin >> temp;
哪个会将跳过的空白1.2读入temp
并在找到不能成为double
的东西后立即停止。
A
1U = 2.3B
1U = 3.4C
那你循环回来
cin.ignore(numeric_limits<streamsize>::max(), '=');
哪个会离开
2.3B
1U = 3.4C
和
cin >> temp;
抓住2.8,然后再重复一次。
代码可能看起来像
while (cin.ignore(numeric_limits<streamsize>::max(), '=') &&
cin >> temp)
{
// use temp
}