C++数据验证为每个非数字字符打印
C++ data validation prints for each non-number character
我使用流动代码来检查用户是否只输入了数字。
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;
}
相关文章:
- 递归形成字符串中所有数字字符的中间和?
- 无符号字符打印其 ASCII 值
- 我正在尝试为字符打印一些相应的值,但条件总是转到其他位置
- C++ 从 std::string 中删除所有非数字字符
- 为什么完整的字符串没有一次打印,但是当我尝试逐个字符打印时
- 延迟逐个字符打印单词
- 如何返回一串字母数字字符中的最大值(例如-1A003B3)?
- C++:如何将 unicode 字符打印到文本文件
- 有没有办法将最初作为字符串输入的数字字符数组复制到双向链表中
- 为什么 std::hex 没有特别用字符打印为十六进制?
- 如何使用 c++ 将数字字符转换为字符串
- 找到树的无序遍历,并通过否定每个备用数字来打印它们
- 使用 C++ 将 UTF8 字符打印到 Linux 控制台
- 从字符数组中修剪非字母数字字符的功能
- 如何在Windows上正确地将拉丁字符打印到C++控制台
- 使用find_if和isalnum在字符串中找到字母数字字符
- 循环直到整数输入在所需范围内无法处理非数字字符输入
- 使用线程根据起始字符打印出单词
- 确保字符串只包含字母数字字符的更好方法
- 字符以数字形式打印到std::cout