使用for循环将数据输入到txt文件几次

时间:2018-01-17 15:35:19

标签: c++

我开始用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;   
} 

然而,结果如下:

所以,输入字段是混合的,它不会重复我要求的次数等等...

为什么会这样?

非常感谢。

1 个答案:

答案 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;
}