如何防止整数被分配给字符串
How to prevent integers being assigned to char strings?
我是一个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
}
}
相关文章:
- 我如何通过引用将 c++ 字符串分配给另一个字符串
- 无法在 c++ 中将字符串分配给字符串数据类型
- 将字符串* 分配给字符* c++
- 如何为C++字符串分配空指针参数?
- 为什么在构造函数中将字符串分配给指针是安全的?
- 如何将wchar_t字符串分配给用户定义类的 CString 成员
- 字符串分配
- 如何将字符串分配给向量(均在堆上)
- 确实为其写入的字符串分配内存
- 简单的字符串分配导致分割故障
- 通过新行不使用字符串流将C 字符串分配
- 将字符串分配到动态数组位置时出错
- 在 c++ 中为字符串分配其分配的大小值是否正确
- 从被空间分开的字符串分配给变量?C [QT]
- 将字符串分配给固定长度的字符数组
- 将一组字符串分配给向量c++的内容
- 如何为字符串分配内存
- C++中的字符串分配:为什么这样做
- 视觉 建议在C++中执行字符串分配什么?
- 字符 *str;str= "HELLO" ;如何在不为字符串分配任何内存的情况下工作?