草庐IT

c++ - std::cin >> std::string 是如何实现的?

特别是,代码如何检查字符的内存是否应该重新分配?或者用户输入了多少个字符?如果我想将C字符串的值分配给我的字符串类的实现,我可能会做这样的事情String&operator=(String&to,constchar*from){if((strlen(from)+1)>to.size){if(to.str!=NULL){delete[]to.str;to.str=NULL;}to.size=strlen(from)+1;to.str=newchar[to.size];}strcpy(to.str,from);returnto;}很简单。但是std::string的operator>>真的

c++ - 使用 ifstream 和 ofstream 与 cin 和 cout 的区别

我读到了fstream等等,前阵子。它说ifstream用于从文件中读取数据,而ofstream用于写入数据。我想知道,使用ifstream的本质是什么?/ofstream如果你可以使用cin.getline()获取数据和cout打印那些? 最佳答案 ifstream:从文件中读取的流类ofstream:写入文件的流类什么是文件?文件是存储信息的资源。例如,一个文本文件。现在,让我们看一个解释ofstream的例子。看下面的代码:#include#includeusingnamespacestd;intmain(){ofstream

c++ - 不稳定的行为

我是C++的新手。小代码示例如下:intmain(intargc,char*argv[]){charch1;intint1;cin>>ch1;cin>>int1;cout当我运行程序并输入以下内容时:az我得到的输出是:a32767我理解“a”,但为什么整数值是32767?我只是想测试看看如果我使用“z”而不是分配给int1的数值会发生什么。我尝试输入:ax...我也得到了相同的结果。现在如果我使用shortint1而不是intint1并使用输入运行程序:az我得到输出:a0附言sizeof(int)=4sizeof(short)=2我使用的是64位机器。

c++ - 是否有可能从 cin 中读取一个空字符串并仍然从 cin.good() 中得到 true?

我的问题是基于这个简单的代码:#includeusingnamespacestd;intmain(){stringbuf;while(cin>>buf&&!buf.empty()){coutcin(它是basic_istream类型的对象)的运算符>>读取并丢弃任何前导空格(例如空格、换行符、制表符)。然后operator>>读取字符,直到遇到下一个空白字符。运算符最终返回流本身,cin。如果不设置至少一个iostateseof,失败或错误,应该不可能输入空字符串?因此,流将使用operatorbool转换为false。我认为!buf.empty()在这里是多余的,但却是一个好习惯。有

c++ - 当输入 char 代替 int 时避免无限循环

我正在做一个银行系统项目,需要确保每个输入都是有效的(程序必须是健壮的)。如果输入无效,则用户必须重新输入。但是当我有一个int类型的变量并且用户输入char类型时,一个无限循环开始了。例如:inti;cin>>i;如果用户输入char无限循环开始。我怎样才能避免它并再次要求用户输入?谢谢 最佳答案 无限循环的原因:cin进入失败状态,这使得它忽略对它的进一步调用,直到错误标志和缓冲区被重置。cin.clear();cin.ignore(100,'\n');//100-->askscintodiscard100charactersf

c++ - Cin 不等待输入?

对于我正在进行的项目,我需要程序能够接收用户的输入,但是当他们输入某些内容时,程序可以继续循环。例如:while(true){if(userInput==true){cin>>input}//DOSOMETHING}这意味着//DOSOMETHING将在每个循环中发生,而无需用户按enter键一百万次。之前,我的解决方案是使用来自conio.h的kbhit()和getch()创建我自己的输入,但这变得非常困惑,而且我不喜欢使用conio.h出于可移植性等原因。此外,它不需要专门使用cin,因为它很可能无法使用它,因此任何不需要的好解决方案我用一个“不是很好”的库来做我自己的输入,将不胜

python - while (cin >> var) 在 python 中的等价物是什么?

在线比赛中,当没有指定输入的长度,无法通过程序直接读取输入文件时,可以使用C++的这段代码:while(cin>>var){//dosomethingwithvar}Python的等价物是什么?不使用任何与文件相关的函数,例如open()write()... 最佳答案 Python中没有直接的等价物。但是你可以用两个嵌套循环来模拟它:forlineinsys.stdin:forvarinline.split():如果您需要的不是字符串,则需要在单独的步骤中进行转换:var=int(var)

C++ cin 按键事件

我相信这是一个非常简单的问题,但我找不到简单的答案。我有一个无限循环,例如while(1)、for(;;),我需要在按键时跳出循环。最简单的方法是什么?P.S.:我不能使用getch、cin.ignore或cin.get,因为它会停止循环。 最佳答案 嗯,你想要的是异步输入。cin提供的所有方法都等待输入。您将不得不为此使用系统特定的功能,或者使用可以为您完成的库。您需要做的不仅是在while循环中处理您的逻辑,还需要从操作系统的消息管道中监听。如果您想了解更多关于那个的信息,请发表评论。编辑:还有另一种方法,但我不推荐它,因为我相

读取标准输入的 C++ 最快的 cin?

我在Linux上使用cachegrind分析了一个计算量大的C++程序。令人惊讶的是,事实证明我的程序的瓶颈不在于任何排序或计算方法......而是在于读取输入。这是cachegrind的屏幕截图,以防我错误地解释分析器结果(参见scanf()):我希望我说的是对的scanf()占用了我80.92%的运行时间。我使用cin>>int_variable_here读取输入,像这样:std::ios_base::sync_with_stdio(false);//SupposedlymakesI/Ofastercin>>NumberOfCities;cin>>NumberOfOldRoads;

c++ - 使用 CIN 提示并接收日期 "MM/DD/YYYY",忽略 "/"字符? (在 C++ 中)

是的,这是为了作业。我不介意努力得到答案,我不想要确切的答案!:)这是我的第一堂C++课。我是在具备VBA、MySql、CSS和HTML的先验知识的情况下进入这门类(class)的。我们需要编写一个具有多种不同功能的程序。其中之一需要接收以"MM/DD/YYYY"格式输入的日期。虽然这本身很容易;作为初学者,我会把cin>>month>>day>>year;并在向用户显示时在后面插入“/”。但是,我相信我们的教授希望用户通过准确输入“12/5/2013”​​或任何其他日期来输入日期。按照他的指示:The'/'canbereadbycin.Soreadthe'/'characterand