无法使用 Fout 创建和命名具有用户输入名称的文件
Not Able to Use Fout to Create and Name a file with a User Inputted Name
我制作了一个小程序,让用户输入文件名,然后程序创建一个具有该名称的 .doc 文件。然后,用户输入一些内容,它出现在 .doc 文件中:
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main()
{
cout << "\nWhat do you want to name your file?\n\n";
string name = "";
char current = cin.get();
while (current != '\n')
{
name += current;
current = cin.get();
}
name += ".doc";
ofstream fout(name);
if (fout.fail())
{
cout << "\nFailed!\n";
}
cout << "Type something:\n\n";
string user_input = "";
char c = cin.get();
while (c != '\n')
{
user_input += c;
c = cin.get();
}
fout << user_input;
cout << "\n\nCheck your file system.\n\n";
}
我在创建文件的行收到错误消息:
ofstream fout(name);
我不知道问题出在哪里。 name
是一个 string
变量,它是 fout
对象的预期输入。
pass name.c_str(),ofstream没有带std::string的构造函数,只有char const *,并且没有std::string到char指针的自动转换;
从 std::string
构造 std::ifstream
和 std::ofstream
对象的能力仅在 C++11 中引入。
如果您的编译器可以选择针对 C++11 标准进行编译,请启用该选项。如果你这样做,你应该可以使用
ofstream fout(name);
例如,如果您正在使用 g++
,则可以使用命令行选项 -std=c++11
。
如果您的编译器不支持 C++11 标准,您将需要使用
ofstream fout(name.c_str());
我制作了一个小程序,让用户输入文件名,然后程序创建一个具有该名称的 .doc 文件。然后,用户输入一些内容,它出现在 .doc 文件中:
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main()
{
cout << "\nWhat do you want to name your file?\n\n";
string name = "";
char current = cin.get();
while (current != '\n')
{
name += current;
current = cin.get();
}
name += ".doc";
ofstream fout(name);
if (fout.fail())
{
cout << "\nFailed!\n";
}
cout << "Type something:\n\n";
string user_input = "";
char c = cin.get();
while (c != '\n')
{
user_input += c;
c = cin.get();
}
fout << user_input;
cout << "\n\nCheck your file system.\n\n";
}
我在创建文件的行收到错误消息:
ofstream fout(name);
我不知道问题出在哪里。 name
是一个 string
变量,它是 fout
对象的预期输入。
pass name.c_str(),ofstream没有带std::string的构造函数,只有char const *,并且没有std::string到char指针的自动转换;
从 std::string
构造 std::ifstream
和 std::ofstream
对象的能力仅在 C++11 中引入。
如果您的编译器可以选择针对 C++11 标准进行编译,请启用该选项。如果你这样做,你应该可以使用
ofstream fout(name);
例如,如果您正在使用 g++
,则可以使用命令行选项 -std=c++11
。
如果您的编译器不支持 C++11 标准,您将需要使用
ofstream fout(name.c_str());