第二个 cin.getline() 没有提示输入就直接结束。这是因为 cin.getline() 会把剩余的字符留在队列中,并且设置失效位,并关闭输入。为此,需要清除失效位:if (!cin) { cin.clear();while (cin.get() != '\n') { continue;} }
当用在多维数组中的时候,也可以用cin.getline(m[i],20)之类的用法: #include<iostream> #include<string> using namespace std; main () { char m[3][20]; for(int i=0;i<3;i++) { cout<<"\n请输入第"<<i+1<<"个字符串:"<<endl; ...
second input:o//getline屏蔽了回车;second input:0x6f 4. getline 需要包括头文件(#include <string>) 功能: 和cin.getline一样; 屏蔽回车; 接收空格; 用法:getline(cin, string); #include <iostream>#include<string.h>#include<stdio.h>#include<stdlib.h>usingnamespacestd;intmain(intargc,char**argv)...
getline(cin,st); cout<<st<<endl; } 上面这段代码,如果输入abc,那么需要按两次回车键才能显示abc(在VC6中),因为getline有三个参数,第三个参数是字符串的结束符,也就是当getline遇到这个结束符时,就不在接受输入了,比如写成 getline(cin,st,'s'); 即使输入的是abcsabc 那么也只会显示 abc ,因此对于上面...
1、cin 2、cin.get() 3、cin.getline() 4、getline() 5、gets() 6、getchar() 附:cin.ignore();cin.get()//跳过一个字符,例如不想要的回车,空格等字符 1、cin>> 用法1:最基本,也是最常用的用法,输入一个数字: #include <iostream> using namespace std; ...
eg1: getline(cin,line,'#'); 那么当我输入"You are the #best!" 的时候,输入流实际上只读入了"You are the ",#后面的并没有存放到line中(应该是在缓冲区里吧)。 eg2: while(getline(cin,line))语句 注意这里默认回车符停止读入,键入Ctrl+Z按回车即可退出循环。
9、容,但是尽量不用或少用;有什么建议可以一起探讨,我的email是kskr原文地址:cin.getline()和cin.get ()另一种用法 #include using namespace std; int main() char myarray130; coutput your string 1:n; cin.getline(myarray1,30,*); coutmyarray1n; char ch1; cin.get(ch1); coutchn; char my...
cin.getline() #include 此函数会一次读取多个字符(包括空白字符)可以接受空格 它以指定的地址为存放第一个读取的字符的位置,依次向后存放读取的字符,直到读满N-1个,或者遇到指定的结束符为止。 若不指定结束符,则默认结束符为'\n'。 其语法为: cin.getline(字符指针(char*),字符个数N(int),结束符(char)...
一次输入过程是这样的,当一次键盘输入结束时会将输入的数据存入输入缓冲区,而cin函数直接从输入缓冲区中取数据。正因为cin函数是直接从缓冲区取数据的,所以有时候当缓冲区中有残留数据时,cin函数会直接取得这些残留数据而不会请求键盘输入,这就是例子中为什么会出现输入语句失效的原因!
cin.clear(); cin.sync(); 或者cin.ignore()什么的,flush什么的,结果证实了,还是出现上面问题的。 解决方案:采用标准C++形势的输入参数函数,也就是: std::getline(std::cin, std::string&);能完美解决这个问题,代码如下: std::string send_buf; ...