void readNumbersFromFile(const std::string& filename, int n, std::vector<std::string> &numbers) 这样做是否会更好,在调用函数时应该怎么写
时间: 2024-01-21 20:02:41 浏览: 81
使用 `void readNumbersFromFile(const std::string& filename, int n, std::vector<std::string> &numbers)` 的函数签名是一个更好的选择,因为它通过引用参数 `numbers` 直接修改了调用者传递的向量,避免了额外的拷贝操作。
在调用该函数时,您可以按如下方式编写代码:
```cpp
#include <iostream>
#include <fstream>
#include <vector>
void readNumbersFromFile(const std::string& filename, int n, std::vector<std::string>& numbers) {
std::ifstream inputFile(filename);
if (inputFile.is_open()) {
std::string number;
while (std::getline(inputFile, number) && n > 0) {
numbers.push_back(number);
n--;
}
inputFile.close();
} else {
std::cout << "Unable to open file." << std::endl;
}
}
int main() {
std::string filename = "numbers.txt";
int n = 5;
std::vector<std::string> numbers;
readNumbersFromFile(filename, n, numbers);
for (const auto& number : numbers) {
std::cout << number << std::endl;
}
return 0;
}
```
在主函数中,我们声明一个空的 `std::vector<std::string>`,然后将其作为引用参数传递给 `readNumbersFromFile` 函数。该函数将从文件中读取指定数量的数字,并直接将它们添加到传入的向量中。
请注意,由于 `numbers` 是通过引用传递的,因此在函数内部对其进行修改将反映在主函数中。因此,无需再返回向量。
在调用函数时,只需将文件名、要读取的数字数量和向量传递给 `readNumbersFromFile` 函数即可。根据实际情况修改文件名和要读取的数字数量。
阅读全文