c++中scanf的表示是啥[关闭]
Posted
技术标签:
【中文标题】c++中scanf的表示是啥[关闭]【英文标题】: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
??
【问题讨论】:
在我投票结束时看到这个cin
。
请看Here。也许您需要访问How to ask on Stack overflow。
Why am I downvoted ?
顺便说一句,scanf 也可以在 c++ 中工作...
【参考方案1】:
scanf("%c", &c)
在 C++ 中的等效表示是 scanf("%c", &c)
。 C++ 与大多数 C 非常兼容 - 您可以使用 malloc
、scanf
、printf
等。
但是,如果你想遵循 C++ 的真正精神,你应该以面向对象的方式去做:
#include <iostream>
int main(int argc, char * argv[])
char c;
std::cin >> c;
return 0;
这个解决方案的主要缺点是,如果你真的想知道std::cin >> c
背后的内容,你必须学习自动分类分配,链式调用和操作符重载。
无论如何,在你的情况下,找一本关于 C++ 的好书或写得很好的教程,它涵盖了这种语言的基础知识,这似乎是一件好事。在 SO 上询问有关此类基础知识的问题不会学到很多东西。
还有更多细节需要考虑:
std::cin>>c;
不等于scanf("%c", &c);
。operator>>
会跳过前导空格,但scanf("%c"...
不会,所以如果用户输入s
,scanf 调用会将' '
读入c
,但>>
会读入's'
c
。您可以使用noskipws
操纵器来更改它,因此:std::cin >> std::noskipws >> c;
将(至少更接近)等效于scanf
调用。 (感谢Jerry Coffin的评论)
【讨论】:
std::cin>>c;
不等同于scanf("%c", &c);
。 operator>>
将跳过前导空格,但 scanf("%c"...
不会,因此如果用户输入 `s, the
scanf` 调用会将 ' ' 读入 c
,但 >>
会将 "s" 读入c
。您可以使用 noskipws
操纵器来更改它,因此:std::cin >> std::noskipws >> c;
将(至少更接近)等效于 scanf
调用。
@JerryCoffin 您真的确定吗,我们应该深入研究这些细节,以回答那些对 C++ 一无所知或了解最少的人?我将首先解释为什么批处理脚本样式 cin >> c
在 C++ 中完全有效,然后可能会详细介绍此运算符重载。
@JerryCoffin 顺便说一句,我敢打赌,这个问题的真正意思应该是“在 C++ 中从用户获取数据的等价物是什么”,而不是“什么是 scanf 函数的精确等价物C++”。
如果我们真的必须了解很多细节,并且我们对 OP 的意图和经验水平非常有把握,那么您可能是对的。但这些都不是真的。
@JerryCoffin 如果我们不确定 OP 的经验水平,我们不能假设他已经足够先进,可以利用您的评论,是吗?尤其是当他写explicite:“我是C++的初学者”【参考方案2】:
scanf("%c",&c)
的等价物是c = cin.get();
写语句可以用cout
,例如cout << "enter code here";
【讨论】:
【参考方案3】:#include <iostream>
using namespace std;
int main()
int i;
cout << "enter code here: ";
cin >> i;
【讨论】:
std::cout
或 using namespace std;
也可以
@Spook :添加并感谢您的建议..!!
查看我对 Spook 答案的评论——这里也是如此。以上是关于c++中scanf的表示是啥[关闭]的主要内容,如果未能解决你的问题,请参考以下文章
在 C++ 中处理没有操作系统依赖的消息的方法是啥? [关闭]
Windows 上最好的免费 C++ 分析器是啥? [关闭]