c; if(isspace(c))//很难让它实际生成一个值 { cout,c++,visual-c++,C++,Visual C++" /> c; if(isspace(c))//很难让它实际生成一个值 { cout,c++,visual-c++,C++,Visual C++" />

Isspace字符函数 我是新手,现在正在学习C++。我目前正在学习cctype(ctype)中的字符函数。我很难理解为什么isspace(a_字符)不返回我的cout消息——问题是它甚至不接受我的Char用户输入。如果您能提供任何帮助或转向正确的方向,我们将不胜感激。如果将Char值指定为:“”,则可以实现所需的响应,但是,它无法达到目的。我已经复制了部分代码。据我所知,空格没有确切的符号?如果是这样,是否可以输入空白作为输入?我已尝试输入:“”,但未成功。再一次,我非常感谢 #include <iostream> #include <cctype> #include <ctype.h> using namespace std; int main() { char c ; char ans = 'y' || 'Y'; do { cout << "Enter a character \n"; cin >> c; if (isspace (c)) //Having trouble get this to actually produce a value { cout << "Your character " << c << "is a whitespace"; } if (ispunct(c)) { cout << c << " is a punctuation character\n"; } cout << "Would you like to enter another value? \n"; cin >> ans; } while (ans == 'Y' || ans == 'y'); return 0; } #包括 #包括 #包括 使用名称空间std; int main() { 字符c; char ans='y'| |'y'; 做{ cout>c; if(isspace(c))//很难让它实际生成一个值 { cout

Isspace字符函数 我是新手,现在正在学习C++。我目前正在学习cctype(ctype)中的字符函数。我很难理解为什么isspace(a_字符)不返回我的cout消息——问题是它甚至不接受我的Char用户输入。如果您能提供任何帮助或转向正确的方向,我们将不胜感激。如果将Char值指定为:“”,则可以实现所需的响应,但是,它无法达到目的。我已经复制了部分代码。据我所知,空格没有确切的符号?如果是这样,是否可以输入空白作为输入?我已尝试输入:“”,但未成功。再一次,我非常感谢 #include <iostream> #include <cctype> #include <ctype.h> using namespace std; int main() { char c ; char ans = 'y' || 'Y'; do { cout << "Enter a character \n"; cin >> c; if (isspace (c)) //Having trouble get this to actually produce a value { cout << "Your character " << c << "is a whitespace"; } if (ispunct(c)) { cout << c << " is a punctuation character\n"; } cout << "Would you like to enter another value? \n"; cin >> ans; } while (ans == 'Y' || ans == 'y'); return 0; } #包括 #包括 #包括 使用名称空间std; int main() { 字符c; char ans='y'| |'y'; 做{ cout>c; if(isspace(c))//很难让它实际生成一个值 { cout,c++,visual-c++,C++,Visual C++,是一个格式化提取器。默认情况下,格式化提取器会在实际读取任何内容之前提取并丢弃所有空白字符。这是一种有用的行为,但在尝试读取空白字符时则不然 使用未格式化的输入(get())或者使用noskipws操纵器。请注意,您以后对ans的读取很可能取决于跳过空格才能正常工作,因此如果选择第二个选项,您可能希望在读取c后使用skipws恢复跳过空格的行为。是一种格式格式化提取器。默认情况下,格式化提取器会在实际读取任何内容之前提取并丢弃所有空白字符。这是一种有用的行为,但在尝试读取空白字符时不会 使用未格

是一个格式化提取器。默认情况下,格式化提取器会在实际读取任何内容之前提取并丢弃所有空白字符。这是一种有用的行为,但在尝试读取空白字符时则不然


使用未格式化的输入(
get()
)或者使用
noskipws
操纵器。请注意,您以后对
ans
的读取很可能取决于跳过空格才能正常工作,因此如果选择第二个选项,您可能希望在读取
c
后使用
skipws
恢复跳过空格的行为。

是一种格式格式化提取器。默认情况下,格式化提取器会在实际读取任何内容之前提取并丢弃所有空白字符。这是一种有用的行为,但在尝试读取空白字符时不会


使用未格式化的输入(
get()
)或者使用
noskipws
操纵器。请注意,您以后对
ans
的读取很可能取决于跳过空格才能正常工作,因此如果选择第二个选项,您可能希望在读取
c
后使用
skipws
恢复跳过空格的行为。

char ans='y'|'y'
哈?我的do-while循环提示用户是否想重复程序
'y'| |'y'
很简单,
是真的
。真尴尬,我明白你们的意思。感谢切线修复!
char-ans='y'| |'y'
我的do-while循环提示用户是否想重复程序
'y'| y'|
简单地说,
是真的
。真尴尬,我明白你们俩的意思了。感谢切线修复!正是像你们这样的人帮助我在晚上睡觉。不过还有一点我要进一步探讨:我决定删除do-while循环,因为它给我带来了麻烦(正如你们所预测的),即使在使用:cin.get(c)时也是如此>>我很好奇为什么,尽管我把它放在了cin成员之后function@Rod1)如果使用
get()
(未格式化且不会自动跳过空白)然后你就不需要跳过了。2)我怀疑问题是输入缓冲区中的换行符在第二次迭代中被读取了。一种可能是使用
ws
ignore
在重新打印提示之前丢弃它。是像你这样的人帮我晚上睡觉。不过,这是一个旁注,我要补充一下rther explore:我决定删除do while循环,因为它给我带来了麻烦(正如您所预测的),即使在使用:cin.get(c)>>skipws;操纵器时也是如此。我很好奇为什么,尽管我在cin成员之后加入了它function@Rod1)如果使用
get()
(未格式化且不会自动跳过空白)然后你就不需要跳过了。2)我怀疑问题是输入缓冲区中的换行符在第二次迭代中被读取了。一种可能是在重新打印提示之前,使用
ws
忽略它。