我想写一个名为“TEXT”的文件,并在每次运行程序时附加到该文件。它编译但不需要输入。请帮忙;我是编程新手。
这是我正在使用的代码:
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
main ()
{
string line;
ifstream file;
file.open("TEXT",ios::in |ios::app);
if (file.is_open())
{
while (file.good() )
{
getline (file,line);
cout << line << endl;
}
file.close();
} else
cout << "Unable to open file";
}
答案 0 :(得分:4)
我不确定你想做什么,但这里是文本文件的一些基本输入/输出操作。希望它有所帮助。
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main()
{
string line;
ifstream input("TEXT", ios::in); // Opens "TEXT" for reading
if(input.fail())
{
cout << "Input error: could not open " << "TEXT" << endl;
exit(-1);
}
while(getline(input, line))
{
cout << line << endl; // prints contents of "TEXT"
}
input.close(); // close the file
ofstream output("TEXT", ios::app); // opens "TEXT" for writing
if(output.fail())
{
cout << "Output error: could not open " << "TEXT" << endl;
exit(-1);
}
output << "I am adding this line to TEXT" << endl; // write a line to text
output.close(); // close the file
return 0;
}
答案 1 :(得分:3)
要写入文件而不是从中读取文件,您基本上需要将file
的类型更改为输出流(ofstream
),file
更改为cin
和cout
到file
。您还可以简化一些事情。如果下一个操作成功,流将自动转换为真值,如果失败则流将自动转换为假值,因此您可以通过引用它来测试流。 (例如)while (file.good())
没有任何问题,它不像while (file)
那样惯用。
#include <iostream>
#include <fstream>
#include <string>
#include <cerrno>
using namespace std;
int main () {
string line;
string fname="TEXT";
/* You can open a file when you declare an ofstream. The path
must be specified as a char* and not a string.[1]
*/
ofstream fout(fname.c_str(), ios::app);
// equivalent to "if (!fout.fail())"
if (fout) {
while (cin) {
getline(cin,line);
fout << line << endl;
}
fout.close();
} else {
/* Note: errno won't necessarily hold the file open failure cause
under some compilers [2], but there isn't a more standard way
of getting the reason for failure.
*/
cout << "Unable to open file \"" << fname << "\": " << strerror(errno);
}
}
参考文献:
答案 2 :(得分:0)
此程序成功打开&#34; TEXT&#34;阅读并将其内容打印到stdout ......
如果您想从输入中读取,则需要readline
中的stdin
:
getline( cin, line );
而不是
getline (file,line);
然后您需要打开file
进行撰写(使用ios::out
标志而不是ios::in
,而不使用ios::app
)并在其中写入而不是{{1 }}:
stdout
而不是
file << line << endl;