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;
答案 0 :(得分:0)
cin.ignore(numeric_limits<streamsize>::max(), '\n');
将忽略整行。但是
cin.ignore(numeric_limits<streamsize>::max(), '=');
将忽略一切,直到= so
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
}