我已经查看了一些不同的东西(似乎无法找到一个关于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;'来表示空行):
>
>
----------
我知道这一定是我失踪的东西,但我似乎无法抓住它。编译器也没有构建错误。
答案 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);
这指示输入流丢弃先前累积的“空格”,即换行符,标签等