C ++文件写入 - 不按预期编写变量

时间:2014-05-20 17:55:34

标签: c++ file-io

我已经查看了一些不同的东西(似乎无法找到一个关于multiprsight的好的文件i / o教程),我已经在文件编写上阅读了tutorialspoint和cplusplus网站,但我的工作似乎并不相同

我复制了类似的,教程来自于C ++文件I / O上的tutorialspoint:

ofstream out;
out.open("D:\\cpp_files\\test_iofile.txt", ios::out);

cout << "Writing to file" << endl;
cout << "Enter your name: ";
string name;
getline(cin, name);

out << name;

cout << "Enter age: ";
int age;
cin >> age;

out << age << endl << "This is an insert" << endl;
out.close();

中间还有一些你可能不太关心的东西,然后是这一部分:

out.open("D:\\cpp_files\\test_iofile.txt", ios::ate);
out << endl;

string inp;
cout << "Write some random crap: ";
getline(cin, inp);

out << inp << endl;
out << "-----------";
out.close();

奇怪的是,它在正确的位置创建.txt文件,但其输出相当于2个空行和短划线。所以我最终(添加了'&gt;'来表示空行):

>
>
----------

我知道这一定是我失踪的东西,但我似乎无法抓住它。编译器也没有构建错误。

1 个答案:

答案 0 :(得分:1)

您必须在cin >> age;

之后刷新缓冲区
cin.ignore (std::numeric_limits<std::streamsize>::max(), '\n');

并将ios::ate更改为ios::app

必须#include <limits>

ios:ate会截断文件,而ios::app会在最后添加。

cin.ignore的替代方法是在cin >> age之后getline使用

getline(cin >> ws, inp);

这指示输入流丢弃先前累积的“空格”,即换行符,标签等