草庐IT

c++ getline()在多次调用时不等待来自控制台的输入

我试图从控制台获取一些用户输入参数,两个字符串,两个整数和一个double。我正在尝试使用的相关代码是这样的:#include#includeusingnamespacestd;//...stringinputString;unsignedintinputUInt;doubleinputDouble;//...cout>inputUInt;tempDVD.setDuration(inputUInt);cout>inputUInt;tempDVD.setYear(inputUInt);cout>inputDouble;tempDVD.setPrice(inputDouble);但是,在运

c++ - 为什么有两个不同的 getline() 函数(如果确实有)?

每次我快速编写一段C++代码行std::strings;cin>>s;我诅咒自己,因为我忘记了它停在空白处而不是整行。然后,在想起getline时,我总是对这两种变体感到困惑:std::strings;getline(std::cin,s);和:charcs[256];std::cin.getline(cs,sizeof(cs));这两者除了数据类型之外真的有区别吗?在我看来,C++方式应该是前者。在什么情况下我会使用后者,因为我可能应该使用真正的字符串还是以null结尾的字符数组?而且,既然输入确实应该是输入流的权限,为什么istream的前一部分不是?

c++ - 在调用 std::getline 之前检查数据可用性

我想从我使用std::getline的流中读取一些数据。下面是使用std::cin的示例。std::stringline;std::getline(std::cin,line);这是一个阻塞函数,即如果没有数据或行来读取它会阻塞执行。你知道在调用std::getline之前是否存在检查数据可用性的函数吗?我不想阻止。如何检查流缓冲区是否充满了对成功调用std::getline有效的数据?如下代码所示if(dataAvailableInStream()){std::stringline;std::getline(std::cin,line);} 最佳答案

c++ - std::cin.getline() 与 std::cin

什么时候应该使用std::cin.getline()?它与std::cin有什么不同? 最佳答案 我们来看看std::cin.getline()分开。首先,有std::.这是标准库所在的命名空间。它有数百种类型、功能和对象。std::cin就是这样一个对象。它是标准字符输入对象,在中定义.它有自己的一些方法,但您也可以将它与许多免费功能一起使用。这些方法和函数中的大多数都是从标准输入中获取一个或多个字符的方法。最后,.getline()是std::cin的一种方法(和其他类似的对象)。你告诉它应该从左侧的对象中获取多少个字符(此处为

c++ - cin 和 getline 跳过输入

这个问题在这里已经有了答案:Whydoesstd::getline()skipinputafteraformattedextraction?(5个回答)关闭6年前。之前我发布了一个关于cin跳过输入的问题,我得到了要刷新的结果,并使用istringstream,但现在我尝试了所有可能的解决方案,但它们都不起作用.这是我的代码:voidcreateNewCustomer(){stringname,address;cout但我仍然得到同样的东西,跳过输入,当它接受输入时,它接受它们并在名称中存储空任何内容,并且在地址中它接受我在名称中写的内容,但从第二个字母到结束我的代码有什么问题?我尝试

c++ - 在 C++ 中使用 getline()

我在使用getline方法获取用户键入的消息时遇到问题,我正在使用类似的东西:stringmessageVar;cout但是,它并没有停下来获取输出值,这有什么问题? 最佳答案 如果您在cin>>something之后使用getline(),则需要将换行符从中间的缓冲区中清除。您可以使用cin.ignore()来做到这一点。应该是这样的:stringmessageVar;cout发生这种情况是因为>>运算符在输入缓冲区中留下了换行符\n字符。当您进行无格式输入时,这可能会成为一个问题,例如getline(),它会读取输入直到找到换行

c++ - std::getline() 返回

我有一个循环,它使用getline()读取文件中的每一行:istreamis;stringline;while(!getline(is,line).eof()){//...}我注意到像这样调用getline()似乎也有效:while(getline(is,line))这里发生了什么?getline()返回一个流引用。它是否以某种方式转换为指针?这实际上是一个好习惯还是我应该坚持第一种形式? 最佳答案 getline()返回的istream正在隐式调用其运算符void*()方法,该方法返回流是否已运行进入错误。因此,它比调用eof()

c++ - std::getline() 返回

我有一个循环,它使用getline()读取文件中的每一行:istreamis;stringline;while(!getline(is,line).eof()){//...}我注意到像这样调用getline()似乎也有效:while(getline(is,line))这里发生了什么?getline()返回一个流引用。它是否以某种方式转换为指针?这实际上是一个好习惯还是我应该坚持第一种形式? 最佳答案 getline()返回的istream正在隐式调用其运算符void*()方法,该方法返回流是否已运行进入错误。因此,它比调用eof()

c++ - 在 cin 之后使用 getline(cin, s)

这个问题在这里已经有了答案:Whydoesstd::getline()skipinputafteraformattedextraction?(5个回答)关闭2年前.我需要以下程序来获取整行用户输入并将其放入字符串名称中:cout>number;cout在getline()命令之前使用cin>>number命令(我猜这是问题所在),它不允许我输入名字。为什么?我听说过关于cin.clear()命令的一些信息,但我不知道它是如何工作的,也不知道为什么它是必要的。 最佳答案 cout>number;cin.ignore(256,'\n')

c++ - 在 cin 之后使用 getline(cin, s)

这个问题在这里已经有了答案:Whydoesstd::getline()skipinputafteraformattedextraction?(5个回答)关闭2年前.我需要以下程序来获取整行用户输入并将其放入字符串名称中:cout>number;cout在getline()命令之前使用cin>>number命令(我猜这是问题所在),它不允许我输入名字。为什么?我听说过关于cin.clear()命令的一些信息,但我不知道它是如何工作的,也不知道为什么它是必要的。 最佳答案 cout>number;cin.ignore(256,'\n')