Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/164.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 从C++;_C++_File - Fatal编程技术网

C++ 从C++;

C++ 从C++;,c++,file,C++,File,我试图逐行读取文件中的数据,并将它们推回向量 数据的格式如下所示 123 23 45 19 46 22 87 26 31 程序没有输出,错误代码为11 std::vector<int>* readDataFromFile(std::string path){ std::vector<int>* v = new std::vector<int>; int a, b, c; std::ifstream inputStream;

我试图逐行读取文件中的数据,并将它们推回向量 数据的格式如下所示 123 23 45 19 46 22 87 26 31

程序没有输出,错误代码为11

std::vector<int>* readDataFromFile(std::string path){


    std::vector<int>* v = new std::vector<int>;
    int a, b, c;
    std::ifstream inputStream;
    inputStream.open(path);
    while(inputStream>>a>>b){
        v->push_back(a);
        v->push_back(b);
        v->push_back(c);
    }
    inputStream.close();

}

int main() {

    std::vector<int>* v = readDataFromFile("file1.txt");
    for(auto it= v->begin(); it != v->end(); it++){
        std::cout<<*it<<std::endl;
    }

    return 0;
}
std::vector*readDataFromFile(std::string路径){
std::vector*v=新的std::vector;
INTA、b、c;
std::ifstream-inputStream;
inputStream.open(路径);
while(inputStream>>a>>b){
v->推回(a);
v->推回(b);
v->推回(c);
}
inputStream.close();
}
int main(){
std::vector*v=readDataFromFile(“file1.txt”);
对于(自动it=v->begin();it!=v->end();it++){
标准::cout
  • 不要忘记在循环中读取c:

    while(inputStream>>a>>b>>c) {
        v->push_back(a);
        v->push_back(b);
        v->push_back(c);
    }
    
  • 您正在动态分配std::vector,并且从不删除它。而是按值返回向量

  • 而且对fstream::close的调用也不是必需的,当流超出范围时,它将从fstream的析构函数关闭

  • 通常,最好通过const引用传递只读字符串参数

    #include <iostream>
    #include <fstream>
    #include <vector>
    
    std::vector<int> readDataFromFile(const std::string& path){
      std::vector<int> v;
      int a, b, c;
      std::ifstream inputStream(path);
      while(inputStream>>a>>b>>c){
          v.push_back(a);
          v.push_back(b);
          v.push_back(c);
      }
    
      return v;
    }
    
    int main() {
      std::vector<int> v = readDataFromFile("file1.txt");
      for(auto it = v.begin(); it != v.end(); it++){
          std::cout<<*it<<std::endl;
      }
    
      return 0;
    }
    
    #包括
    #包括
    #包括
    std::vector readDataFromFile(常量std::字符串和路径){
    std::向量v;
    INTA、b、c;
    std::ifstream inputStream(路径);
    while(inputStream>>a>>b>>c){
    v、 推回(a);
    v、 推回(b);
    v、 推回(c);
    }
    返回v;
    }
    int main(){
    std::vector v=readDataFromFile(“file1.txt”);
    对于(自动it=v.begin();it!=v.end();it++){
    
    std::Coutar您确定文件在程序运行的同一目录下吗?是的,它在同一目录下。您应该检查
    inputStream.is\u是否打开()
    。而且您在
    期间(inputStream>>a>>b)从不接受
    c
    您在
    readDataFromFile
    中缺少
    return
    语句。这很糟糕,是return语句和c造成的。抱歉。值得注意的是,根据编译器能够执行的优化,按值返回
    std::vector
    可能会复制整个向量。这是事实,但这是一个常见的错误通过值返回向量并依赖于RVO(或在C++11移动语义中)。请参见以下问题: