【问题标题】:Read a text file containing random sized integers separated by a space读取包含由空格分隔的随机大小整数的文本文件
【发布时间】:2013-02-11 21:02:54
【问题描述】:

我的文本文件包含整数,例如:123 879709789 43536 8768768

我想读取一个数组索引中的整数,例如数组 [1]=123 数组 [2]=879709789。

这是我尝试过的:

ifstream myfile("numbers.txt");

if (myfile.is_open())
{
    while ( myfile.good() && !myfile.eof() )
    {
        for(i=1; i<myfile.eof(); i++)
        {
            myfile >> ar[i];
            if(ar[i]=="")
            {
                i++;
            }
        }
    }
}

【问题讨论】:

  • 想展示你的尝试吗?
  • 您自己尝试过吗?从您现在的问题来看,我们看不到您有任何努力以某种方式自行解决。
  • ifstream myfile ("numbers.txt"); if (myfile.is_open()){ while ( myfile.good() && myfile.eof() ){ for(i=1; i> ar[i]; if(ar[]==""){ i++; }

标签: c++ arrays file-io io


【解决方案1】:

像这样:

#include <vector>
#include <fstream>
#include <iterator>


std::ifstream infile("myfile.txt");   // or just use `std::cin`

std::vector<int> v(std::istream_iterator<int> { infile },
                   std::istream_iterator<int> { } );

现在v 包含您的所有号码。如果一路上任何地方出现输入错误,您将看不到它并且输入将停止。如果这是一个问题,请使用getline/istringstream 方法,本网站上数百个类似问题对此都有记录。

【讨论】:

  • 预期 ,' or ...' 在 '{' 标记之前代码 int main(int argc, char *argv[]){ std::ifstream infile("numbers.txt" ); // 或者只使用std::cin if(infile.good()){ std::vector v(std::istream_iterator{infile}, std::istream_iterator{}); }
  • @user2062703 可能是你不支持 C++11,在这种情况下你可以用圆括号替换大括号。
  • 是的 () 括号有效。感谢您到现在为止。请告诉我如何遍历我的整数并显示它们。
  • 访问了网站但没有显示任何输出?有什么建议吗?
  • @user2062703:如果你没有 C++11,你可以为迭代器使用中间变量,或者写 v((std::istream_iterator&lt;int&gt;(infile)), std::istream_iterator&lt;int&gt;())(注意额外的括号)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-29
  • 1970-01-01
  • 2014-10-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多