我开始用C ++编写代码。这就是我希望我的程序做的事情: 1.用户输入他想要写入数据库的人数(简单的txt文件)。 2.用户输入第一人的姓名(Nombre_usuario),年龄(edad)和ID(C.I :)。 3.用户重复相同的过程,直到达到他在步骤1中输入的数字为止。
这是我的代码:
#include<iostream>
#include<windows.h>
#include <direct.h>
#include <fstream>
using namespace std;
int main(){
string Nombre_usuario;
int edad;
int cerdula;
int num;
//----------LOOP----------
std::cout<<"¿Cuántos clientes desea ingresar ahora?:";
std::cin>>num;
for(int x=0; x<num;x++){
//-------------User Interface------------
std::cout<<"Ingrese su nombre y apellido:";
std::getline(cin, Nombre_usuario);
std::cout<<"Ingrese su edad:";
std::cin>>edad;
std::cout<<"Ingrese su C.I.:";
std::cin>>cerdula;
}
//----------------Data storage on txt-------------------------------
_mkdir("C:\\FP");
std::ofstream outfile;
outfile.open("base_de_datos_cli.txt", std::ofstream::out, std::ofstream::app);
outfile<<"Nombre de usuario:"<<Nombre_usuario<<std::endl;
outfile<<"Edad:"<<edad<<std::endl;
outfile<<"C.I.:"<<cerdula<<std::endl;
outfile.close();
return 0;
}
然而,结果如下:
所以,输入字段是混合的,它不会重复我要求的次数等等...
为什么会这样?
非常感谢。
答案 0 :(得分:0)
我不会重复这个过程的次数
将数据输出到&#34; base_de_datos_cli.txt&#34;的代码块。应该在循环内部,因为每次获得新输入时,最后一个输入都会丢失。
输入字段混合
阅读this。您无法在另一次输入后使用std::getline
而无需调用cin.ignore()
来清除输入流中剩余的额外换行符。
以下是您的程序的新版本,可以使用并且更好地进行组织。我尽可能地用西班牙语保存代码。请不要直接复制,但要试着理解为什么你的代码没有工作:
#include <iostream>
#include <direct.h>
#include <fstream>
#include <string>
using namespace std;
int main(void)
{
_mkdir("C:\\FP");
std::ofstream outfile;
outfile.open("C:\\FP\\base_de_datos_cli.txt", std::ofstream::out | std::ofstream::app);
string Nombre_usuario;
int edad;
int cerdula;
int num;
std::cout << "¿Cuántos clientes desea ingresar ahora?:";
std::cin >> num;
for (int x = 0; x < num; x++) {
std::cout << "Ingrese su nombre y apellido:";
std::cin.ignore();
std::getline(std::cin, Nombre_usuario);
std::cout << "Ingrese su edad:";
std::cin >> edad;
std::cout << "Ingrese su C.I.:";
std::cin >> cerdula;
outfile << "Nombre de usuario:" << Nombre_usuario << std::endl;
outfile << "Edad:" << edad << std::endl;
outfile << "C.I.:" << cerdula << std::endl;
}
outfile.close();
return 0;
}