C++数据验证为每个非数字字符打印

C++ data validation prints for each non-number character

本文关键字:数字字符 打印 数据 验证 C++      更新时间:2024-05-09

我使用流动代码来检查用户是否只输入了数字。

while(!cin)
{
cout << "You entered something that is not a number. Please try again" << endl;
cout << "Please enter the point on the circle in the form x y: ";
cin.clear();
cin.ignore();
cin >> coordX >> coordY;
cout << endl;
}

如果用户输入"&";。错误是它会为输入的每个非数字字符重新打印。例如,如果输入(4,2(,它将打印3次。如何使其只打印一次?

如果你想要那种输入,你可以用std::getline从控制台获取行,然后用"quot;作为delimeter字符(这是必要的,因为我们不知道数字的长度(。之后,您只需要将子字符串转换为整数。

这是一个工作示例(没有有效性检查,但它有效(

#include <iostream>
int main()
{
int coordX, coordY;

std::string input;
std::getline(std::cin, input);

size_t pos = input.find(" ");
coordX = std::stoi(input.substr(0, pos));
coordY = std::stoi(input.substr(pos + 1, input.length()));
std::cout << "coordX: " << coordX << " coordY: " << coordY;
}