Esta es la primera vez que uso stackoverflow. No he podido encontrar la información que necesito con respecto a getline. Estoy en una clase de programación simple para las transferencias de ingeniería, por lo que el código que escribimos es bastante simple. Todo lo que estoy tratando de hacer aquí es poner un número definido por el usuario de preguntas y respuestas en dos matrices diferentes. Mi bucle while se parece a esto (yo estaba usando un bucle pero cambió a tiempo sólo para ver si iba a dejar de romper):¿Qué no entiendo acerca de getline + strings?
int main()
{
srand((unsigned)time(0));
string quest1[100], answ1[100];
int size1, x = 0, num, count1, visit[100], shuffle[100];
fstream flashcard1;
cout << "flashcard.cpp by NAME\n" << endl;
cout << "This program allows user to manipulate questions and answers for studying.\n" << endl;
cout << "\nHow many flash cards will be entered(MAX 100)? ";
cin >> size1;
cout << endl;
while(x < size1)
{
cout << "Enter Question: ";
getline(cin , quest1[x]);
cout << endl;
x = x++;
/*
cout << "Enter Answer: " << endl;
getline(cin,answ1[x]);
cout << endl;
flashcard1.open("flashcard1.dat", ios::app);
flashcard1 << quest1[x] << " " << answ1[x] << endl;
flashcard1.close();
cout << "Data Stored." << endl;
*/
}
}
Noté la respuesta introduciendo parte, así como los datos de ahorro en el archivo solo para la depuración. Cuando ejecuto el programa, se salta la línea de obtención para la primera pregunta, muestra el segundo ciclo de "Introducir pregunta" y la línea de obtención funciona para el resto de ellos. Entonces, si tengo un tamaño 1 de 5, el programa solo llena las posiciones de la matriz 1-4. Por favor ayuda. Este es un sencillo programa de tarjeta flash que hará lo mismo que si creara tarjetas de memoria para estudiarlas y mezclarlas.
'x = x ++;' es Undefined Behavior. Debería ser 'x ++' (o '++ x', o' x + = 1', o 'x = x + 1', o' x - = -1' ....) –
Eso es porque x ++ y ++ x ambos cambian x por su valor en/decrement por 1. Sin embargo, no se puede garantizar que la asignación suceda antes o después de esto, por lo que a x se le puede asignar el valor de x ++ antes de que ocurra el incremento o después de que ocurra (el el estándar simplemente no especifica esto). –
+1 para una buena primera pregunta sobre SO. –