String 如何使getch()接受按enter键(\n)? 我在C++中做了一个触摸式打字控制台程序。 它从文件中读取文本并将其加载到屏幕。 用户必须输入正确的字母,以便继续下一个字母。 我唯一的问题是“\n”, 因此,如果我在文本文件(我正在读取的文件)中有类似的内容:

String 如何使getch()接受按enter键(\n)? 我在C++中做了一个触摸式打字控制台程序。 它从文件中读取文本并将其加载到屏幕。 用户必须输入正确的字母,以便继续下一个字母。 我唯一的问题是“\n”, 因此,如果我在文本文件(我正在读取的文件)中有类似的内容:,string,visual-c++,getch,String,Visual C++,Getch,用户输入“hello”后, 他应该按回车键,对吗? 但每当他按下enter键时,getch()就会将他带回到当前行的开头 我怎样才能解决这个问题 我正在读取整个文件并将其存储为字符串,如下所示: void getTextFromFile() { text.assign(istreambuf_iterator<char>(fin), istreambuf_iterator<char>()); } void getTextFromFile() { 赋值

用户输入“hello”后, 他应该按回车键,对吗? 但每当他按下enter键时,getch()就会将他带回到当前行的开头

我怎样才能解决这个问题

我正在读取整个文件并将其存储为字符串,如下所示:

void getTextFromFile()
{
    text.assign(istreambuf_iterator<char>(fin), istreambuf_iterator<char>());       
}
void getTextFromFile()
{
赋值(istreambuf_迭代器(fin),istreambuf_迭代器());
}

首先,getch()已被弃用(如果您开始遇到更多问题,请提供参考)。据我所知,您试图一次接受1个字符的字符输入。如果对“\n”enter键使用getch(),应该可以。如果没有,请多解释。

我只是尝试了一个快速的实验。显然(正如reagan所说,它已被弃用;请改用)在按Enter键时返回的是
'\r'
,而不是
'\n'

在当前程序中,尝试键入Ctrl-J而不是Enter;这将为您提供来自
getch()
'\n'
结果


为了将来的参考,您应该向我们展示调用
getch()
的实际代码。我不知道currentLetter=getch()是如何工作的与问题中的代码相关。

您没有向我们显示调用
getch()
的代码。在C或C++中没有这样的函数。curses/ncurses包中有一个
getch()
函数,在Windows中的
中声明了一个完全不同的函数。您使用的是哪一个?(fin)是一个ifstream对象,(text)是字符串变量,您可以看到,我正在存储文件中的文本。那么
getch()
?我刚才包括:#包括并像这样使用它:currentLetter=getch();只是提醒一下,因为你似乎是新来的。如果答案有帮助,您可以通过向上投票(单击向上箭头图标)来表明这一点。如果一个答案解决了您的问题,您可以通过单击复选标记图标来接受它;cout@VeXe:如果您键入Ctrl-J而不是Enter,它是否到达?在测试它是否为'\n'之前,您正在输出
char c
。如果您不希望回车/换行,那么您应该在
cout@VeXe之前测试它是否为'\n',我想我误解了您的意图,键入
Ctrl+J
而不是
Enter
作为@Keith是说我也编辑了代码:while(true){char c=_getch();if(c=='\n')break;else cout cout gues you super awesome:D ctrl+j的东西对getch()和_getch()有效,但回车键甚至对_getch()也不起作用我真的很抱歉,我没有向您展示更多我的代码,但这是一个类,我的意思是,我可以发布长代码吗?(实际上没有那么长)即使我发布了,我如何才能在注释中将其转换为良好的格式形状(ctrl+k不起作用),您能告诉我更多关于什么;不推荐;意思是……@VeXe:正如我所说,
\u getch()
在键入Enter时返回
'\r'
,而不是
'\n'
,请检查此项。而“deprecated”基本上是指过时。因为POSIX(特别是诅咒)定义了一个同名函数,微软决定用
\u getch
替换
getch
,并阻止使用旧的
getch
@VeXe:我发现我的回答暗示使用
\u getch
而不是
getch
将解决
'\r'
'\n'
的问题。事实上,它们都是同样的行为。我重新组织了第一段以避免这种混乱。因此,有两件事你应该做:用
\u getch()
替换
getch()
,并检查
'\r'
而不是
\'n'
(实际上,两者都检查可能是个好主意。)啊哈,成功了:D你们是超级酷的家伙:)谢谢
void getTextFromFile()
{
    text.assign(istreambuf_iterator<char>(fin), istreambuf_iterator<char>());       
}