Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 关于getline+,我不了解什么;串?_C++_Arrays_String_Getline - Fatal编程技术网

C++ 关于getline+,我不了解什么;串?

C++ 关于getline+,我不了解什么;串?,c++,arrays,string,getline,C++,Arrays,String,Getline,这是我第一次使用stackoverflow。我一直无法找到我需要的关于getline的信息。我在一个简单的工程传输编程课程中,所以我们编写的代码非常简单。这里我要做的就是将用户定义数量的问题和答案放入两个不同的数组中。我的while循环如下所示(我使用for循环,但切换到while只是为了看看它是否会停止中断): int main() { srand((未签名)时间(0)); 字符串quest1[100],answ1[100]; int size1,x=0,num,count1,visit[10

这是我第一次使用stackoverflow。我一直无法找到我需要的关于getline的信息。我在一个简单的工程传输编程课程中,所以我们编写的代码非常简单。这里我要做的就是将用户定义数量的问题和答案放入两个不同的数组中。我的while循环如下所示(我使用for循环,但切换到while只是为了看看它是否会停止中断):

int main()
{
srand((未签名)时间(0));
字符串quest1[100],answ1[100];
int size1,x=0,num,count1,visit[100],shuffle[100];
fstream flashcard1;

cout它似乎跳过第一次迭代的原因是因为当您这样做时

cin >> size1;
您输入一个数字并点击回车键。
cin
读取整数并在缓冲区中保留未读的换行符,因此当您调用
getline
时,就好像您立即点击回车键,
getline
不读取任何内容(因为它在读取换行符之前停止),丢弃换行符,并将空字符串放入
quest1[0]
。这就是
getline
s的其余部分“正确”工作的原因

在循环上方添加
cin.ignore('\n')
,以消除延迟的
'\n'
,这将使其正常工作,除非代码中出现其他错误


不要忘记将
x=x++
更改为
x++
以避免UB。

x=x++;
是未定义的行为。它应该是
x++
(或者
+x
,或者
x+=1
,或者
x=x+1
,或者
x-=-1
)这是因为x++和++x都会通过将x的值按1的比例递增/递减来改变x本身。但是,您不能保证赋值是在此之前还是之后进行的,因此可以在增量发生之前或之后为x赋值(标准只是没有规定这一点)+ 1,好的第一个问题。欢迎来到堆栈溢出。+ 1!这是你的问题的话题,但是1)请不要使用<代码> EngL\/Cord>。当你的意思是<代码> \n '/COD>。<代码> STD::cOUT@谢谢所有的提示。我下学期将上第一个计算机科学课。这个简单的C++类工程是我第一次进入程序。MMIN和我真的很喜欢。如果我喜欢下学期的CS课程,我将继续主修计算机科学。至于我的代码是关于Rob说的。我甚至不知道STD::CUT。我认为这个老师不是很好用C++,或者他只是想让这个班级尽可能简单。文件,教我们2-5新的C++代码每班。无论如何谢谢所有的帮助家伙!谢谢!我已经没有经验过这样一个有益的社区多年来!@布伦特如果回答你的问题,请务必点击旁边的复选标记来标记这是你的问题的答案。我道歉。我上课之前,无法编辑我的程序。m、 但假设这是正确的答案。当我在循环上方添加cin.ignore('n)时,程序就不会在循环中出现第一个cout语句,除非你只按了大约六次enter键times@Brent好的,然后试试看。忽略(1)
。我自己也试过了,效果很好。
cin >> size1;