如何防止将整数分配给char字符串?

时间:2015-10-27 17:05:50

标签: c++ string

我是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;
}

2 个答案:

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