创建用户定义输入的文件

时间:2015-04-13 20:49:18

标签: c++

我有两个函数add_accountis_account_exists,我正在尝试创建代码,如果它已经不存在则创建文件。

但问题是输入文件名,如代码所示为问题1

这是我的代码,我试过了

void add_account()
{

    std::string name,account;
    cout<<"Enter name of account : ";
    std::getline(std::cin,name);

    cout<<endl<<name<<endl;   //Problem 1 , here 'name' is not displaying
    string ext=".txt";
    account=name.append(ext);
    cout<<account;             

    if(is_account_exists(account)==0){
        ofstream outfile(account.c_str());
        cout<<"Account created!";
    }
    else{
        cout<<"Account already exists!";
    }
}


 bool is_account_exists(const string& name) {
    ifstream f(name.c_str());
    if (f.good()) {
        f.close();
        return true;
    } else {
       f.close();
       return false;
    }
}

2 个答案:

答案 0 :(得分:0)

我尝试过输入你的程序,其中有一些涉及我将它放在main()中,因此我的代码是:

#include <iostream>
#include <string>

using std::string;
using std::cout;
using std::endl;
using std::getline;
using std::cin;

int main()
{
    string name, account;
    cout << "Enter the name of the account: ";
    getline(cin, name);
    cout << endl << "Name is set to " << name << endl;
    string ext = ".txt";
    account = name.append(ext);
    cout << "Account is set to: " << account << endl;
    return 0;
}

现在我知道我没有像你那样在一个添加帐户中完成它,但是我已经把它放在一个主要内容中,因为我想知道如果我输入几乎完全是什么会发生什么你在方法中做了,它看起来运行正常。

我想知道你是否有任何错误,或者你忘了包含什么?调用该函数时程序是否提示您输入?

所以在你的main()例如,你有没有调用add_account()?

我很抱歉在回答中提出另一个问题,但乍一看我的代码没有任何问题。

修改

再看一下你的代码,你的cout在它之前没有std ::就像你在string和cin之前那样,检查一下。对不起,我错过了那个...

答案 1 :(得分:0)

我的猜测是name正在显示,但不包含您的期望。经过一个非常简单的测试后,我已经验证您没有理由让代码无法将用户输入到name(使用std::cinstd::string和{{1来表示不一致的错误}和cout - 没有std :: - )。

这是测试:

endl

并且完美无缺。

所以要检查几件事:

  1. 程序提示输入文件名后,请确保只按 Enter 一次。
  2. 尝试调试代码并查看真正包含std::string name; std::getline(std::cin, name); std::cout << name << std::endl; 的内容。