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

C++ C++;从文件中读取数据(书本练习),c++,copy,fstream,istream-iterator,C++,Copy,Fstream,Istream Iterator,免责声明:此问题与教科书中的编程练习直接相关 我正在从一本教科书上做C++编程练习,却弄不清楚该怎么做。希望有人能指出我代码中的错误。问题来了 使用istream_迭代器、复制算法和back_插入器读取包含由空格分隔的int值的文本文件的内容。将int值放入int向量中。复制算法的第一个参数应该是与文本文件的ifstream对象关联的istream_迭代器对象。第二个参数应该是使用类模板istream_迭代器的默认构造函数初始化的istream_迭代器对象-生成的对象可以用作“end”迭代器。读

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

我正在从一本教科书上做C++编程练习,却弄不清楚该怎么做。希望有人能指出我代码中的错误。问题来了

使用istream_迭代器、复制算法和back_插入器读取包含由空格分隔的int值的文本文件的内容。将int值放入int向量中。复制算法的第一个参数应该是与文本文件的ifstream对象关联的istream_迭代器对象。第二个参数应该是使用类模板istream_迭代器的默认构造函数初始化的istream_迭代器对象-生成的对象可以用作“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;
}
intmain()
{
std::vectortestVector;
std::ifstream输入文件(“/Users/GrinNare/Documents/Study/C++/Chapter 16/Chapter 16/16_10_Text_File.txt”,std::ios::in);
std::istream\u迭代器inputFromFile(inputFile);
std::copy(inputFromFile,std::istream_iterator(),back_inserter(testVector));
对于(int i=0;istd::cout我用ideone试过你的代码,改为从
std::cin
读取

我复制您的问题的唯一方法是使用无法打开的文件作为输入

因此,我想添加以下内容将显示发生了什么:

// after opening the file
if (! inputFile) {
  std::cerr << "Failed to open file" << std::endl;
  return 1;
}
//打开文件后
如果(!inputFile){

我猜输入文件不包含整数(二进制编码)但是ASCII文本。所以你应该转换。不确定,但是…对我来说是有效的:你确定文件打开正确吗?谢谢大家。它在早上开始工作,没有任何变化…这很奇怪。我在mac上使用Xcode,除了这两个…哈哈