我是c ++编程的新手,我遇到了无法解决的问题。我试图在用户输入整数而不是字符时创建错误消息。问题是,由于某种原因,整数被接受并分配给char字符串。我认为将字符串定义为int或char等的目的是让编译器知道要接受哪些值。谁能让我知道我做错了什么?
int x, input = false;
char check[SIZE], str[SIZE];
cout << "Enter one word: ";
cin >> str;
while (!cin)
{
cout << "\nERROR: You must enter only one word with characters. \n\nRe-enter: ";
cin.clear();
cin.ignore(256, '\n');
cin >> str;
}
答案 0 :(得分:5)
首先,使用std::string
代替char[]
。
其次,“2”是完全有效的字符串。
第三,您可以使用find_first_of
或类似内容来检查字符串是否包含任何不合需要的值。
std::string::size_t result = str.find_first_of("0123456789");
if (result != std::string::npos)
{
// Found an undesirable character
}
答案 1 :(得分:0)
char只是根据ascii值对整数进行1字节解释(即整数68是字符“D”的ascii值)。可以找到其他ascii值here。
对于您的代码,您可能需要创建一个循环输入字符串的函数,并检查是否有任何字符不是字母。
例如:
for (int i = 0; i < strlen(str); i++)
{
if ((int)str[i] < 65 || ((int)str[i] > 90 && (int)str[i] < 97) || (int)str[i] > 122)
{
// handle error
}
}