这样的代码会出现问题:
#include <cstdlib>
#include <iostream>
#include <stdexcept>
using namespace std;
int main(int argc, char** argv) {
try {
throw runtime_error("Message");
} catch (exception e) {
cout << e.what();
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我希望Message能出现.但结果是std::exception.我认为virtual functions可以从超类引用中调用子类.怎么解决这个问题?
我正在尝试使用ifstream和istringstream仅使用变量.我知道他们俩都是孩子的istream.所以,我试图只做一个类型的变量istream和初始化取决于一些输入.
真正的问题是我要求用户输入文件路径或文件内容.然后,我将逐行阅读.我试着这样做.
istream * stream;
if(isFile){
ifstream a("fileOrContent");
stream = &a;
} else {
istringstream a("fileOrContent");
stream = &a;
}
getline(stream,line)
// do something with line
Run Code Online (Sandbox Code Playgroud)
我也尝试过这个
ifstream stream;
if(isFile){
ifstream stream("fileOrContent");
} else {
istringstream stream("fileOrContent");
}
getline(stream,line)
// do something with line
Run Code Online (Sandbox Code Playgroud)
目前,我为每个代码使用了两个完整的代码副本.有关我怎么做的任何建议?
谢谢