【问题标题】:What is the representation of scanf in c++ [closed]c++中scanf的表示是什么[关闭]
【发布时间】:2013-12-30 08:34:14
【问题描述】:

我是 C++ 的初学者,我想知道 scanf("%c",&c) 在 C++ 中,任何人都请告诉我如何在 C++ 中编写此语句enter code here??

【问题讨论】:

标签: c++ c visual-c++ cin scanf


【解决方案1】:

scanf("%c", &c) 在 C++ 中的等效表示是 scanf("%c", &c)。 C++ 与大多数 C 非常兼容 - 您可以使用 mallocscanfprintf 等。

但是,如果你想遵循 C++ 的真正精神,你应该以面向对象的方式去做:

#include <iostream>

int main(int argc, char * argv[])
{
    char c;
    std::cin >> c;

    return 0;
}

这个解决方案的主要缺点是,如果你真的想知道std::cin &gt;&gt; c 背后的内容,你必须学习自动分类分配链式调用操作符重载

无论如何,在你的情况下,找一本关于 C++ 的好书或写得很好的教程,它涵盖了这种语言的基础知识,这似乎是一件好事。在 SO 上询问有关此类基础知识的问题不会学到很多东西。

还有更多细节需要考虑:

std::cin&gt;&gt;c; 不等于 scanf("%c", &amp;c);operator&gt;&gt; 会跳过前导空格,但scanf("%c"... 不会,所以如果用户输入s,scanf 调用会将' ' 读入c,但&gt;&gt; 会读入's' c。您可以使用 noskipws 操纵器来更改它,因此:std::cin &gt;&gt; std::noskipws &gt;&gt; c; 将(至少更接近)等效于 scanf 调用。 (感谢Jerry Coffin的评论)

【讨论】:

  • std::cin&gt;&gt;c;等同于scanf("%c", &amp;c);operator&gt;&gt; 将跳过前导空格,但 scanf("%c"... 不会,因此如果用户输入 `s, the scanf` 调用会将 ' ' 读入 c,但 &gt;&gt; 会将 "s" 读入c。您可以使用 noskipws 操纵器来更改它,因此:std::cin &gt;&gt; std::noskipws &gt;&gt; c; 将(至少更接近)等效于 scanf 调用。
  • @JerryCoffin 您真的确定吗,我们应该深入研究这些细节,以回答那些对 C++ 一无所知或了解最少的人?我将首先解释为什么批处理脚本样式 cin &gt;&gt; c 在 C++ 中完全有效,然后可能会详细介绍此运算符重载。
  • @JerryCoffin 顺便说一句,我敢打赌,这个问题的真正意思应该是“在 C++ 中从用户获取数据的等价物是什么”,而不是“什么是 scanf 函数的精确等价物C++”。
  • 如果我们真的必须了解很多细节,并且我们对 OP 的意图和经验水平非常有把握,那么您可能是对的。但这些都不是真的。
  • @JerryCoffin 如果我们不确定 OP 的经验水平,我们不能假设他已经足够先进,可以利用您的评论,是吗?尤其是当他写explicite:“我是C++的初学者”
【解决方案2】:

scanf("%c",&amp;c) 的等价物是c = cin.get();

写语句可以用cout,例如cout &lt;&lt; "enter code here";

【讨论】:

    【解决方案3】:
    #include <iostream>
    
    using namespace std; 
        int main(){
         int i;
          cout << "enter code here: ";
          cin >> i;
    }
    

    【讨论】:

    • std::coutusing namespace std; 也可以
    • @Spook :添加并感谢您的建议..!!
    • 查看我对 Spook 答案的评论——这里也是如此。
    猜你喜欢
    • 2017-04-16
    • 1970-01-01
    • 2011-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-23
    • 2021-12-29
    • 2015-07-15
    相关资源
    最近更新 更多