【问题标题】:C++ - How to change/decrement value in file?C++ - 如何更改/减少文件中的值?
【发布时间】:2020-09-30 04:46:40
【问题描述】:

我和我的朋友有这个问题,我们想减少或改变文件中数字的值,但我们需要使用结构来做到这一点。这在 C++ 中是否可行?对不起,如果不是我是 C++ 初学者

这是输入文件

50
60

这里是代码

#include <iostream>
#include <fstream>
using namespace std;
struct number
{
    int numberChange;
};
int main(int argc, char** argv) 
{
    ifstream file;
    file.open("value.txt");
    number arr[100];
    int numberOfnumbers;
    while (file >> arr[numberOfnumbers].numberChange)
    {
        numberOfnumbers++;
    }

    for (int i = 0; i < numberOfnumbers; i++)
    {
        cout << arr[i].numberChange << endl;
    }

    return 0;
}

控制台输出是这样的

50
60

我想将第一个数字 50 的值更改为喜欢 45 但我不知道该怎么做

【问题讨论】:

  • 您可以覆盖文件中的字符,只要结果长度相同。例如,如果用1000 覆盖50,则可以覆盖文件中的下一个字符。
  • 读入数据,进行更改并写入新文件。
  • 从文件中读取数据时优先使用std::vector。数组可能溢出;或者您可能会浪费空间(例如,当只有 3 个数据时分配 100 个插槽)。
  • @ThomasMatthews 是的,我知道,但这仅用于示例目的。还是谢谢你的建议
  • 这在 C++ 中是否可行? 当然可以使用结构或类来保存数组的数据.并更改数据中的值。然后将数据写回文件。 struct MyData {std::vector &lt;int&gt; data;};

标签: c++ arrays file struct


【解决方案1】:

目前,在您的第一个while 循环中,您将文件中获得的任何数字保存到number 类型的数组中。您现在可以像对待任何普通数组一样对待它。您已经知道数组中元素的数量,因此您可以像 arr[N] 这样简单地索引数组,其中 N 是小于 numberOfnumbers 的任意数字。然后您可以按照您想要的方式对数组中的任何数字进行操作。对于您提供的将 50 更改为 45 的示例,在 while 循环之后执行 arr[0].numberChange = 45;。更改数据后,您可以用新数字覆盖文件中原来的内容。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-09
    • 2012-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多