【问题标题】:Exporting an array to txt file将数组导出到 txt 文件
【发布时间】:2020-04-02 17:43:42
【问题描述】:

我有一个代码,它从用户那里接收 3 个数字,然后对它们进行排序并打印出一个排序后的数组。 我正在尝试将排序后的数字导出到 .txt 文件中,但我得到的只是一些随机数,例如 txt 文件中的“342142464”。 我不明白我做错了什么。

任何帮助将不胜感激。

#include <iostream>
#include <fstream>
std::ofstream ofs("sorted_numbers.txt");
using namespace std;

int main()
{
    //array declaration
    int arr[3];
    int n,i,j;
    int temp;

    //total numbers to read
    n = 3;

    //read 3 numbers
    for(i=0;i<n;i++)
    {
        cout<<"Enter number ["<<i+1<<"] ";
        cin>>arr[i];
    }

    //print input numbers
    cout<<"Unsorted Array numbers:"<<endl;
    for(i=0;i<n;i++)
        cout<<arr[i]<<"\t";
    cout<<endl;

    //sorting - ASCENDING ORDER
    for(i=0;i<n;i++)
    {       
        for(j=i+1;j<n;j++)
        {
            if(arr[i]>arr[j])
            {
                temp  =arr[i];
                arr[i]=arr[j];
                arr[j]=temp;
            }
        }
    }

    //print sorted array numbers
    cout<<"Sorted (Ascending Order) Array numbers:"<<endl;
    for(i=0;i<n;i++)
        cout<<arr[i]<<"\t";
    cout<<endl; 

    ofs << arr[i] << std::endl; 

    return 0;
}

【问题讨论】:

  • 使用ofs 而不是cout,就像将排序后的数组打印到控制台一样。
  • ofs &lt;&lt; arr[i] &lt;&lt; std::endl; 移动到最后一个for 循环内。
  • ofsostreamcoutostream。只需像对待cout 一样对待ofs,你就会变成金子。
  • 您还应该将文件打开模式添加到std::ofstream 构造函数中。 cplusplus.com/reference/fstream/ofstream/ofstream
  • 另外,你得到垃圾值的原因是因为i == 3当你写入文件时。

标签: c++ arrays ofstream


【解决方案1】:

问题:

但我得到的只是一些随机数,例如 txt 文件中的“342142464”。

ofs &lt;&lt; arr[i] &lt;&lt; std::endl;

这是您写入文件的唯一内容,这也是一个 UB(未定义的行为),因为这里 i 的值是 n(退出上一个循环后)。

arr[n] 超出范围,可以是任何垃圾值,或者您的程序甚至可能终止。

解决方案:

就像您使用 cout 将排序后的数组打印到控制台一样,使用 ofs 执行相同的操作:

for (i = 0; i < n; ++i)
    ofs << arr[i] << '\t';
ofs << endl;

或者您可以在之前的循环中执行此操作:

for (i = 0; i < n; ++i)
{
    cout << arr[i] << '\t';
    ofs << arr[i] << '\t';
}
cout << endl;
ofs << endl;

【讨论】:

    猜你喜欢
    • 2013-02-19
    • 2021-12-23
    • 1970-01-01
    • 2019-10-11
    • 1970-01-01
    • 1970-01-01
    • 2018-08-11
    • 2020-09-27
    • 2016-05-08
    相关资源
    最近更新 更多