def _CommentLineGenerator(self, comments_filename): if os.path.isfile(comments_filename): with open(comments_filename, "r") as f_comments: done = False while not done: line = f_comments.readline() if line != "": (vector_number, comment) = line.split(maxsplit=1) yield (int(vector_number), comment) else: done = True 翻译成c++函数
时间: 2024-03-09 07:44:42 浏览: 64
以下是将Python函数翻译为C++函数的尝试:
```cpp
#include <iostream>
#include <fstream>
#include <string>
#include <utility>
std::pair<int, std::string> CommentLineGenerator(const std::string& comments_filename) {
std::ifstream f_comments(comments_filename);
bool done = false;
while (!done) {
std::string line;
std::getline(f_comments, line);
if (!line.empty()) {
int vector_number = std::stoi(line.substr(0, line.find(' ')));
std::string comment = line.substr(line.find(' ') + 1);
return std::make_pair(vector_number, comment);
} else {
done = true;
}
}
return std::make_pair(-1, ""); // 返回空的pair
}
```
需要注意的是,Python的`yield`关键字是用来定义生成器函数的,而C++没有生成器这样的概念。因此,我们将该函数改写为返回一个`std::pair<int, std::string>`类型的值,表示一个向量编号和一条评论。同时,在C++中,我们需要使用`std::ifstream`来打开文件进行读取,使用`std::getline`函数逐行读取文件内容。
阅读全文