【问题标题】:Read from a text file and storing to an array C++从文本文件读取并存储到数组 C++
【发布时间】:2017-11-09 00:02:40
【问题描述】:

我有一个程序从文本文件 (sortarraysin.txt) 中读取值并将这些值存储到一个数组中。但是,当我尝试将数组打印到控制台时,我的输出不显示文本文件中的数字。我的文本文件和程序如下所示。

文本文件:

45 59 302 48 51 3 1 23

程序:

int array[8];
int i = 0;
string inFileName, getcontent;
cout << "Enter input file name -> ";
cin >> inFileName;
fstream inFileStr(inFileName.c_str(), ios::in);
if(inFileStr.fail()){
    cerr << "Unable to open " << inFileName << endl;
    exit(-1);
}
if(inFileStr.is_open()){
    while(!inFileStr.eof()){
        getline(inFileStr, getcontent);
        cout << getcontent << endl;
        array[i++] << atoi(getcontent.c_str());
        for(i=0;i<=8;i++){
        cout << array[i] << " ";
        }
    }
}

输出:

Enter input file name -> sortarraysin.txt 
45 59 302 48 51 3 1 23
-2145069216 1 -13232 0 -2145069216 1 -12816 0 -13136

为什么我的数组值打印的是这些数字而不是文本文件中的值?

【问题讨论】:

  • 那么,为什么不把数字读成数字呢?可能也想阅读此内容:stackoverflow.com/questions/5605125/… 如果您的所有数字都在同一行并且您阅读了整行,那么您需要在将其转换为数字之前对该行进行拆分。但实际上,只需阅读数字..
  • @RetiredNinja 我该怎么做?
  • int num; while(file &gt;&gt; num) { do something with the number }

标签: c++ arrays fstream


【解决方案1】:
int value;
int i = 0;
while(inFileStr >> value)
{ 
   myArray[i] = value;
   i++;
}

如果您按照我的说明进行操作,则无需使用 getline,也无需将字符串转换为整数。记住代码越少越快..

【讨论】:

  • 建议在while 循环中添加&amp;&amp; i &lt; maxArraySize,以防止在文件大于预期时超出数组末尾。轻微的唠叨:“更少的代码更快”并非总是如此。与看起来更麻烦的解决方案相比,更简单的代码可能会导致更多的缓存未命中或对数量级减速的可预测性较差。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多