gpt4 book ai didi

C++ 文件写入 - 没有按预期写入变量

转载 作者:行者123 更新时间:2023-11-28 06:52:04 26 4
gpt4 key购买 nike

我浏览了一些不同的东西(似乎无法在 pluralrsight 上找到一个好的文件 i/o 教程),并且我已经阅读了关于文件写入的 tutorialspoint 和 cplusplus 网站,但我的似乎无法正常工作.

我从 tutorialspoint on C++ file I/O 复制了相当相似的教程:

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 个空行和破折号。所以我最终得到了(添加“>”以指示空行):

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

我知道这一定是我遗漏的东西,但我似乎无法捕捉到它。编译器也没有构建错误。

最佳答案

您必须在 cin >> age; 之后刷新缓冲区,

cin.ignore (std::numeric_limits<std::streamsize>::max(), '\n');

并更改ios::ateios::app

必须#include <limits>

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

cin.ignore 的替代品是在cin >> age之后使用getline作为

getline(cin >> ws, inp);

这指示输入流丢弃先前累积的“空白”,即换行符、制表符等

关于C++ 文件写入 - 没有按预期写入变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23766733/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com