草庐IT

c++ - std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n' ) 使用#include <Windows.h> 时出错

这个问题在这里已经有了答案:std::max-expectedanidentifier(6个答案)macro"max"requires2arguments,butonly1given(4个答案)关闭去年。在VisualStudio2010Pro中,我在max()上收到一个编译错误,指出“需要一个标识符”命令的一部分。似乎在windows.h头文件中有一个max(a,b)标识符和编译器想要使用它。我尝试使用#include也一样,但这并没有解决问题。有什么办法可以解决这个问题吗?

c++ - 从 cin 或文件中读取

当我尝试编译代码时istreamin;if(argc==1)in=cin;else{ifstreamifn(argv[1]);in=ifn;}gcc失败,提示operator=是私有(private)的。有什么方法可以根据条件将istream设置为不同的值吗? 最佳答案 您可以为in使用指针,例如:istream*in;ifstreamifn;if(argc==1){in=&cin;}else{ifn.open(argv[1]);in=&ifn;} 关于c++-从cin或文件中读取,我们

c++ - 如何为 cin 提供自己的分隔符?

在c中,我可以将换行符([^\n])与scanf一起使用。使用它我可以存储该行。同样对于cin,我可以使用getline。如果我必须存储一个段落,我可以使用我自己的特殊字符定界符(如[^#]或[^\t]以及c中的scanf函数来模拟该功能。chara[30];scanf("%[^\#]",a);printf("%s",a);如何在cpp中实现与cin对象类似的功能。 最佳答案 istream.getline允许您指定要使用的分隔符,而不是默认的'\n':cin.getline(char*s,streamsizen,chardelim

c++ - C++标准是否保证cin、cout等先创建后销毁?

cin、cout、基本流相关-是否在标准中的任何地方保证这些对象将首先创建并最后销毁?这意味着非本地静态对象可以在它们的构造函数和析构函数中依赖它们(这些对象和基本流之间没有构造函数竞争)。 最佳答案 它们保证在包含之后声明的任何静态对象之前创建无论如何,在开始之前main.它们在程序执行期间不会被销毁。包含header具有声明类型为ios_base::Init的静态变量的效果,其创建确保标准流被初始化。如果你想要标准语:C++1127.4.1[iostream.objects.overview]/2:Theobjectsareco

c++ - 辛是如何工作的?

我运行了这段代码charc;cin>>c;cout>c;cout并写入控制台ab,按下回车键。所以我在下一行得到了ab。但我不明白它是如何工作的。在按下enter之前,程序不会读取任何内容,对吗?按下后,读取a,保存到charc,然后读取charc,写入a到安慰。没关系。但是它如何读取第二行的b呢?第二行不是b 最佳答案 cin是标准输入流。流特性对于深入理解C++I/O至关重要。默认情况下,执行cin>>x意味着:Fromthepointcurrentlyinthestream,skipanywhitespacewhichmigh

c++ - 从 cin 读取 getline 到字符串流 (C++)

所以我尝试从标准输入中读取这样的输入(使用cin):AdamEnglish85CharlieMath76EricaHistory82RichardScience90我的目标是最终将每个数据片段存储在我创建的数据结构中它自己的单元格中,所以基本上我想解析输入,以便每个数据片段都是独立的。由于每一行输入都是由用户一次输入一个,所以每次我都会得到一整行我需要解析的输入。目前我正在尝试这样的事情:stringstreamss;getline(cin,ss);stringname;stringcourse;stringgrade;ss>>name>>course>>grade;我遇到的错误是XC

c++ - getline(cin, String) 在没有另一个输入的情况下接收输入

我的代码是这样的,stringaString;cin>>aString;cout)gets:"每次我运行它时,我都会输入“12”,我得到“12”和“”。我想知道为什么getline会在没有用户输入的情况下收到。我可以理解,当我输入“1224”之类的内容时,cin将获得“12”,而getline应该获得其余部分。(另外,如果有人能回答,中间的空格被视为cin的结尾,那么为什么它会传递给getline?)刚开始使用C++上的字符串,所以请不要让它太难。谢谢你。 最佳答案 当您将标准流提取与getline混合使用时,getline有时会返

c++ - cin.get() 和 cin.getline() 的区别

我是编程新手,我对C++中的get()和getline()函数有一些疑问。我对这两个功能的理解:getline()函数读取整行,并使用回车键传递的换行符来标记输入结束。get()函数很像getline()但不是读取并丢弃换行符,get()将该字符留在输入队列。我正在阅读的书(C++PrimerPlus)建议使用get()而不是getline()。我的困惑是getline()并不比get()更安全,因为它确保以'\n'结束行。另一方面,get()只会将字符卡在输入队列中,从而可能导致问题? 最佳答案 有相同数量的优点和缺点,并且-本质

c++ - std::cin 跳过空格

因此,我正在尝试编写一个函数来检查一个单词是否在一个句子中,方法是遍历一个char数组并检查相同的char字符串。只要Sentence没有任何空格,该程序就可以运行。我用谷歌搜索,它们都是相同的建议;cin.getline但是无论我如何实现它,它要么不运行,要么跳过整个输入并直接输出。如何计算空格?#includeusingnamespacestd;boolisPartOf(char*,char*);intmain(){char*Word=newchar[40];char*Sentence=newchar[200];cout>Word;cout而且我不允许使用strstr进行比较。

c++ - 我希望 cin 读取到 '\n' 但我不能使用 getline

我有一个以下格式的文本文件:infodata1data2infodata1data2data3data4...问题是:当使用getline()时,数据的数量(和长度)可能非常大并导致运行时问题。所以我无法将整行读入std::string。我尝试了以下方法:for(inti=0;i>info;while(cin.peek()!='\n'&&cin>>data){//dostuffwithdata}}然而cin.peek()并没有成功。信息在while循环中读入数据,程序把事情搞砸了。我该如何解决这个问题? 最佳答案 您可以尝试逐个字符