从用户输入的字符串中命名输出文件

时间:2018-01-29 06:43:29

标签: c++ file-io io

这是我在C ++中的第一个项目。我之前使用过C语言,文件I / O似乎有点不同。

项目要求用户输入用于保存输出文件的名称。

我知道我应该使用ofstream,它应该是这样的:

ofstream myfile;
myfile.open ("example.txt");
myfile << "Writing this to a file.\n";
myfile.close();

我加粗了引起混淆的片段 如何根据用户输入的字符串命名文件?
*注意,C类型的字符串,所以是一个字符数组 #include&lt;字符串&gt;不允许

3 个答案:

答案 0 :(得分:1)

#include <iostream>
#include <fstream>
#include <string>

using namespace std;

string path;
string name;
string h_path;
string text;

void create() {
    ofstream file(h_path, ios::app);
    if (!file.fail()) {
        file << text;
        file.close();
    }
}

int main() {
    cout << "please enter path(c:\\folder\): ";
    cin >> path;
    cin.ignore();
    path = path + "/";
    cout << "please enter the name of the file (test.txt): ";

getline(cin, name);
    cout << "content of the file: ";
    getline(cin, text);
    h_path = path + name;
    create();
    cout << "new file created";
    cout << h_path;
}

答案 1 :(得分:1)

由于我的其他答案得到否定投票,这是另一个没有#include <string>

的解决方案

您可以将用户的输入保存在临时char数组中,然后将其保存到字符串变量std::string

包含必要的内容:

#include <iostream>
#include <fstream>

将用户的输入保存到char数组中:

char input[260];
cin >> input;

然后将其保存在字符串变量中,只需执行以下操作:

string filename = input;

要打开文件流,您需要使用std::ofstream。请记住,文件是在与项目/应用程序相同的文件夹中创建的。

std::ofstream outfile (filename + "." + "file extension");

正如您已经知道的那样outfile.open();会打开文件。

使用outfile << "hello";,您可以写入文件。

要关闭文件,请使用outfile.close();关闭文件。

这里有一些示例代码:

#include <iostream>
#include <fstream>

using namespace std;

void main()
{
    char input[260];
    cin >> input;
    string filename = input;
    ofstream outfile(filename + "." + "txt");
    outfile << "hello";
    outfile.close();
}

我希望这会有所帮助。

问候。

答案 2 :(得分:-1)

#include <iostream>
#include <string>
#include <fstream>

using namespace std;

int main()
{
    string fileName;
    cin >> fileName;
    ofstream myfile;
    myfile.open(fileName);
    myfile << "Writing this to a file.\n";
    myfile.close();
}