C++ 从C++;
我试图逐行读取文件中的数据,并将它们推回向量 数据的格式如下所示 123 23 45 19 46 22 87 26 31 程序没有输出,错误代码为11C++ 从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;
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移动语义中)。请参见以下问题: