如何防止整数被分配给字符串

How to prevent integers being assigned to char strings?

本文关键字:字符串 分配 何防止 整数      更新时间:2023-10-16

我是一个c++编程新手,我遇到了这个我无法解决的问题。每当用户输入整数而不是字符时,我试图创建一个错误消息。问题是,由于某种原因,整数被接受并分配给字符串。我认为将字符串定义为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. nnRe-enter: ";
    cin.clear();
    cin.ignore(256, 'n');
    cin >> str;
}

首先,用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
}

char只是根据ascii值对整数的1字节解释(即整数68是字符'D'的ascii值)。其他ascii值可以在这里找到。

对于您的代码,您可能需要创建一个函数,该函数循环遍历输入的字符串并检查是否有任何字符不是字母。 例如:

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
    }
}