【问题标题】:C++ :: Function to return user input until enter key is pressedC++ :: 在按下回车键之前返回用户输入的函数
【发布时间】:2018-11-25 22:17:02
【问题描述】:

这绝对不是当前的语法,但只是为了让你明白:)

#include <stdio.h>

void getWord()
{
    while((c=getchar())!='\n')
    {
        myString.=c;
    }
    return myString;
}

int main(void)
{
    var c=getWord();
    print_f("\nCLast Word:",c);
    return 0;
}

请记住,我不会中断当前行,并且我希望即使在按下回车键后也能获得用户输入并保持在同一行。

【问题讨论】:

  • 简单地使用std::getline?如果您想在“输入”之前获得输入,为什么要“getWord”?
  • 在大多数控制台窗口中,当按下 Enter 键时,光标很可能会向下移动。另一方面,如果您改为从输出中删除 \n,则没有人会注意到差异。
  • 最终会是“getWord”和“getQuote”,这只是一个例子:D...
  • AFAIK,Windows 控制台仅在按下 Enter 时向程序发送输入,因此在此之前您无法读取输入。

标签: c++ function return getchar


【解决方案1】:

使用 std::getline。该函数从输入流中读取一行并将其保存到字符串中。

#include <iostream>
#include <string>

int main() {
    std::string input;
    std::getline(std::cin, input); // get input until enter key is pressed
    std::cout << input << std::endl; // print the string
    return 0;
}

或者你可以通过“使用命名空间std;”省略std::

#include <iostream>
#include <string>

using namespace std;

int main() {
    string input;
    getline(cin, input); // get input until enter key is pressed
    cout << input << endl; // print the string
    return 0;
}

【讨论】:

  • 工作(几乎完美)我使用 getchar 是有原因的...我不想在按下回车键后换行...我想留在同一行
  • 标准 C++ I/O 库只有从流中读取输入的函数,这意味着要在控制台上获取字符串,应按下回车键。如果您想在不按回车键的情况下获取输入,则必须使用非标准函数,如 Windows 中 中的 _getch()。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-05
  • 2011-12-31
  • 1970-01-01
  • 2011-06-22
  • 2015-07-28
  • 2021-10-23
相关资源
最近更新 更多