【问题标题】:C++ cin.getline only reads one characterC++ cin.getline 只读取一个字符
【发布时间】:2012-09-22 07:22:01
【问题描述】:

我使用的是 Xcode 4.5,我的程序中有以下代码:

char strChar[5];
cin.getline(strChar, 5);
int i = atoi(strChar);

当我开始尝试输入一个数字时,在按下第一个数字后,控制台将不再接受任何输入(除了回车键,在这种情况下程序只会立即返回零)。显然,我想接受多个字符,我该如何完成呢?

感谢您回答我的问题

【问题讨论】:

    标签: c++ getline cin


    【解决方案1】:
    *****更新*********** 2012 年 10 月 4 日*********

    Apple 已发布修复此问题的更新。 XCODE 4.5.1 (4G1004)

    这是 Xcodes 最新版本 (4.5) 中的一个已知错误。 Apple 知道这一点,并且正在开发补丁。目前截至发稿时,没有已知的解决方法。现在你只需要在终端中运行程序。

    ** 注意在较新版本的 Xcode 中,命令行工具不会自动安装 ** 安装进入 Xcode -> 首选项 -> 下载 -> 安装命令行工具

    在终端中运行 C++ 程序:

    1.) 打开终端。

    2.) 导航到正确的目录

    3.) 键入“make projectName”减去引号

    4.) 执行程序:“./projectName”减去引号

    【讨论】:

    • 我能做到的最好,希望苹果能尽快解决,这绝对是一个痛苦..lol
    • @JamesPrince 下载更新
    【解决方案2】:

    如果你想读一行,写起来可能更容易:std::getline(std::cin, str),其中str的类型是std::string。 您的示例仅读取 5 个字符。

    注意:如果你想读取的不仅仅是一个数字,而是多行的一堆数字,你应该把它们全部放入一个循环中。

    【讨论】:

    • 如果我使用该代码,我也有相同的行为,控制台基本上在第一个字符之后冻结(但 xcode 不会崩溃或任何东西)
    【解决方案3】:

    请注意:您的代码没有将字符串读入“str”,只是“strChar”。

    【讨论】:

    • 我只是在玩代码,结果看起来像这样,我会改变它以使其更有意义。
    猜你喜欢
    • 2020-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-23
    相关资源
    最近更新 更多