C ++从文件中读取数据(练习)

时间:2015-07-11 07:32:55

标签: c++ copy fstream istream-iterator

免责声明:此问题与教科书中的编程练习直接相关。

我正在从教科书开始进行C ++编程练习,但却无法弄清楚如何使其正常工作。希望有人能指出我的代码中的错误。这就是问题......

"使用istream_iterator,复制算法和back_inserter来读取包含由空格分隔的int值的文本文件的内容。将int值放入int的向量中。复制算法的第一个参数应该是与文本文件的ifstream对象相关联的istream_iterator对象。第二个参数应该是一个istream_iterator对象,它使用类模板istream_iterator的默认构造函数进行初始化 - 结果对象可以用作" end"迭代器。阅读文件的内容后,显示结果向量的内容。"

我构建了以下代码。代码编译,但没有做任何事情。

int main()
{
    std::vector< int > testVector;

    std::ifstream inputFile( "/Users/GrinNare/Documents/Study/C++/Chapter 16/Chapter 16/16_10_Text_File.txt", std::ios::in );

    std::istream_iterator< int > inputFromFile( inputFile );

    std::copy( inputFromFile, std::istream_iterator< int >(), back_inserter( testVector ) );

    for ( int i = 0; i < testVector.size(); i++ )
        std::cout << testVector[i] << "\t";

    std::cout << std::endl;

    return 0;
}

文本文件包含以下内容: &#34; 12 23 43 34&#34;

我尝试调试代码并注意到文本文件中的值无法正确读入int向量,因为它们用空格分隔,而不是换行。

有人可以帮忙吗?!

1 个答案:

答案 0 :(得分:0)

我在ideone中尝试了您的代码,更改为从ON DUPLICATE UPDATE读取。 It works as expected.

我可以重现您的问题的唯一方法是当我使用无法打开的文件作为输入时。

所以我想添加以下内容将显示正在发生的事情:

std::cin

可能你在这条道路上有一个错字。