c++输入字符或校验字符串的长度为1
c++ input character or check length of string is 1?
所以我最初使用cin让用户输入一个字符。然后,如果该字符不是a、b或c,则继续循环并打印一条错误消息。但是,如果用户输入多个字符,则会多次打印错误消息。现在我用scanf来取一个字符串并检查长度是否为1。这是直接的,只是不工作。
string enterLetter() {
string n;
scanf("%s", &n);
return n;
}
void main() {
string ch = "";
cout << "Type a, b, or c: ";
while (ch != "a" && ch != "b" && ch != "c"){
while (ch.length() != 1) {
ch = enterLetter();
cout << ch.length();
}
ch = tolower((char)ch.c_str());
cout << "n" << ch;
}
您不能像尝试那样使用scanf("%s")
和std::string
。scanf("%s")
期望预先分配的char[]
。如果您想读取std::string
,请使用std::cin.operator>>()
或std::getline()
代替:
char enterLetter() {
string n;
do {
std::getline(std::cin, n);
}
while (n.length() != 1);
return n[0];
}
int main() {
char ch;
do {
std::cout << "Type a, b, or c: ";
ch = enterLetter();
}
while ((ch != 'a') && (ch != 'b') && (ch != 'c'));
std::cout << ch;
return 0;
}
您不需要,也不应该为此使用string
。char
和scanf
一起使用效果更好。
int main() {
char ch;
cout << "Type a, b, or c: ";
scanf("%c", &ch);
while ((ch > 'C' && ch < 'a') || ch > 'c' || ch < 'A' ) {
if (ch >= 'A' && ch <= 'Z')
ch += ('a' - 'A');
cout << endl << ch;
cout << endl << "Enter a, b, or c: ";
scanf("%c", &ch);
}
}
使用scanf
来获得char ch
。它循环,而char
不是a, b, c
或A, B, C
(因为你似乎想要一个大写的用例)。如果char
是大写的,它被转换成小写,然后输出char
。
您可以使用cin.getline()
读取以Enter键结束的整行用户输入。
char str[64];
cin.getline(str, sizeof(str));
如果strlen(str)
不等于1,则会抛出错误。否则,str[0]
可与a
、b
或c
进行比较。
如果在循环中scanf
字符串,它将返回以空格(空格或换行字符)结束的第一组字符。在下一次迭代中,它将读取下一个字符串,以此类推。如果用户输入类似"abc defn"
的值,scanf将首先返回abc
,然后是def
。如果使用cin.getline(),则在第一次调用cin.getline()时将返回在换行符之前输入的所有字符,即"abc def"
。
相关文章:
- 如何使用堆栈将字符串输入拉伸 k 次
- 不确定出了什么问题(字符串输入)
- 如何获取字符串输入n次?
- 使用重定向命令从 stdin 读入的字符串"<"输入文件未正确附加
- isPalindrome不显示输出,isPalindrome函数未使用字符串输入作为字符串参数进行测试
- C++ 对象数组字符串输入在控制台上不起作用
- 为什么 cin 在包含字符串标头后接受字符串输入
- 拆分字符串输入并查找字符是否有效
- 有没有办法将最初作为字符串输入的数字字符数组复制到双向链表中
- 将字符串输入到多维数组中
- 字符串输入后的空格
- 字符串流中的自定义字符串输入
- C 未验证字符串输入
- 总结数字字符串输入的最佳方法
- 如何验证用户将字符串输入到std :: cin中
- 在C++测试家庭作业问题中的字符串输入时无法退出循环(作为数据验证)
- 如何在C++中检测字符串输入中的换行符
- C++将字符串输入拆分为两个整数
- 如何检查字符串输入是否为有效的双精度
- 在读取数据文件时,如何找到用户字符串输入的字谜?