C++ C++;简单文件读入数组问题

C++ C++;简单文件读入数组问题,c++,arrays,file,input,C++,Arrays,File,Input,简单快速的问题。 在不知道浮点值的长度的数组中读取浮点值的最佳方法是什么? (但是我们知道它的长度不会超过75个整数) 假设我有一个文件(derp.txt) 整数是5.36.2 1.5 5.0 1.4 4.5…等等 我想把它们放入数组中[75]; 在C++中,最好的方法是什么?(如果你的感觉很棒) 我想它应该是stringstreams和getline的组合,但我对stringstreams一点也不熟悉 编辑:我忘了提这个。 在该数组之后是另外两个不属于该数组的数字(它们很容易读入),所以基本上

简单快速的问题。 在不知道浮点值的长度的数组中读取浮点值的最佳方法是什么? (但是我们知道它的长度不会超过75个整数)

假设我有一个文件(derp.txt) 整数是5.36.2 1.5 5.0 1.4 4.5…等等

我想把它们放入数组中[75]; 在C++中,最好的方法是什么?(如果你的感觉很棒) 我想它应该是stringstreams和getline的组合,但我对stringstreams一点也不熟悉

编辑:我忘了提这个。 在该数组之后是另外两个不属于该数组的数字(它们很容易读入),所以基本上我只需要读到行尾

std::vector results;
std::vector<double> results;
std::copy(std::istream_iterator<double>(std::cin),
          std::istream_iterator<double>(),
          std::back_inserter(results));
std::copy(std::istream_迭代器(std::cin), std::istream_迭代器(), 标准:背部插入器(结果);
您可以用实际使用的任何流替换
std::cin

读入数组有点混乱,但您可能无论如何都不想使用数组;您说您不知道值列表的长度,那么您如何知道75是数组的正确大小呢?使用
std::vector
,您就不会有这个问题。

std::vector结果;
std::copy(std::istream_迭代器(std::cin),
std::istream_迭代器(),
标准:背部插入器(结果);
您可以用实际使用的任何流替换
std::cin


读入数组有点混乱,但您可能无论如何都不想使用数组;您说您不知道值列表的长度,那么您如何知道75是数组的正确大小呢?使用
std::vector
,您就不会有这个问题。

补充回答:只需使用一个ifstream而不是std::cin,您就可以开始了。@Mercfh,它复制到流的结尾,这和行的结尾可能相同,也可能不同。@Mercfh:它复制到流失败为止;流可能会失败,因为它达到EOF或出现提取错误(例如,如果文件在某处包含“abcdef”)。如果您想从文件中读取一行,请考虑使用<<代码> STD::GETLION>代码>将该行读入<代码> STD::String ,然后使用<代码> STD::RestIntrass从该行中提取内容。通常,如果您希望特别处理换行符,以确保数据格式正确,则最好使用此两步方法。我也会咨询你的C++书的I/O章节。好的,但是让我说我有一些东西在那行之后不需要读到数组中。就像这个数组,然后是另外两个不属于的数字。所以我只需要到那一行的末尾,而不是文件的末尾。@Mercfh:在这种情况下,您需要知道需要从流中复制多少元素(您说您不知道)。最简单的方法是使用
std::copy\n
;它不是当前C++标准库的一部分,但它是C++ 0x的一部分,最近的编译器应该包含它,而且它是简单而直接的。添加到这个答案:只使用IFFSTATE代替STD::CIN,你就可以去了。@ MelCFH,它复制到流的结尾,这和行的结尾可能是相同的,也可能不是相同的…@Mercfh:它复制到流失败为止;流可能会失败,因为它达到EOF或出现提取错误(例如,如果文件在某处包含“abcdef”)。如果您想从文件中读取一行,请考虑使用<<代码> STD::GETLION>代码>将该行读入<代码> STD::String ,然后使用<代码> STD::RestIntrass从该行中提取内容。通常,如果您希望特别处理换行符,以确保数据格式正确,则最好使用此两步方法。我也会咨询你的C++书的I/O章节。好的,但是让我说我有一些东西在那行之后不需要读到数组中。就像这个数组,然后是另外两个不属于的数字。所以我只需要到那一行的末尾,而不是文件的末尾。@Mercfh:在这种情况下,您需要知道需要从流中复制多少元素(您说您不知道)。最简单的方法是使用
std::copy\n
;它不是当前C++标准库的一部分,但它是C++ 0x的一部分,最近的编译器应该包含它,而且编写起来简单易行。