loadFromTextFile.h
#include <string>
#include <vector>
#include <iostream>
#include <fstream>
#include <cstdlib>
class loadFromTextFile{
private:
int rows = 0;
int columns = 0;
std::string file_path;
std::vector<std::vector<std::string> > nodeGrid;
void process(std::string);
public:
loadFromTextFile(std::string);
loadFromTextFile();
};
loadFromTextFile.cpp
#include "loadFromTextFile.h"
using namespace std;
//implementions
loadFromTextFile::loadFromTextFile(string filePath){
file_path = filePath;
string line;
ifstream f(file_path);
if (!f.is_open())
perror("error while opening file");
while (getline(f, line)) {
process(line);
}
if (f.bad())
perror("error while reading file");
cout << "total rows" << rows;
}
void loadFromTextFile::process(string s){
rows++;
cout << s<<endl;
}
的main.cpp
#include "loadFromTextFile.h"
int main(){
std::string path = "E:\\10x10.txt";
loadFromTextFile(path);
//loadFromTextFile("E:\\10x10.txt");//works
}
任何人都知道我为什么要重新定义“路径”;字符串路径的不同基本类型,但是当我直接传递字符串而不是使用它可以使用的变量路径时。
答案 0 :(得分:4)
loadFromTextFile(path);
相当于loadFromTextFile path;
,即声明。
loadFromTextFile("E:\\10x10.txt");
不能被解释为声明,因此它被视为转换表达式,创建并销毁临时对象。它编译,但可能不是你想要的。
您可能希望声明一个命名变量,因此之后仍然可以使用它加载的数据:
loadFromTextFile loaded(path);