gpt4 book ai didi

c++从具有相同循环的ifstream或stringstream读取

转载 作者:行者123 更新时间:2023-11-30 02:36:27 25 4
gpt4 key购买 nike

我有一个函数需要从 ifstream(磁盘文件中的文本)或 stringstream(内存中的文本)读取。

这是我想做的一个例子:

void myFunction(bool file,stringstream& ss){
ifstream inFile;
string oneline;
if (file == true){
//code to open file with inFile
}
while (getline(file==true?inFile:ss, oneline)){
// ..process lines
}
...
...

不用说它不会编译。任何人都可以建议实现这一目标的正确方法吗?

最佳答案

所有 iostreams 类都派生自公共(public)基类。输入流都派生自istream,输出流都派生自ostream。大多数需要处理输入流或输出流的典型函数(但并不真正关心它是否来自文件、字符串等)只是处理对 istreamostream,像这样:

void myFunction(std::istream &is) {
std::string oneline;
while (getline(is, oneline))
process(oneline);
}

if (file) {
std::ifstream inFile(filename);
myFunction(inFile);
}
else {
std::istringstream fromMemory(...);
myFunction(fromMemory);
}

关于c++从具有相同循环的ifstream或stringstream读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32728775/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com