问题描述: 我试图从一个文本文件中读取并输出一个随机行,但在运行它时一直收到“浮点异常(核心转储)”。
解答: 这个问题可能是由于代码中的某些错误导致的。下面是一些可能的原因和解决方法:
#include <iostream>
#include <fstream>
#include <string>
int main() {
std::ifstream file("filename.txt");
if (!file.is_open()) {
std::cout << "Failed to open the file." << std::endl;
return 1;
}
// 读取文件内容并输出随机行
file.close();
return 0;
}
#include <iostream>
#include <fstream>
#include <string>
int main() {
std::ifstream file("filename.txt");
if (!file.is_open()) {
std::cout << "Failed to open the file." << std::endl;
return 1;
}
// 检查文件是否为空
if (file.peek() == std::ifstream::traits_type::eof()) {
std::cout << "The file is empty." << std::endl;
file.close();
return 1;
}
// 读取文件内容并输出随机行
file.close();
return 0;
}
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <random>
int main() {
std::ifstream file("filename.txt");
if (!file.is_open()) {
std::cout << "Failed to open the file." << std::endl;
return 1;
}
// 检查文件是否为空
if (file.peek() == std::ifstream::traits_type::eof()) {
std::cout << "The file is empty." << std::endl;
file.close();
return 1;
}
// 统计文件中的行数
std::vector<std::string> lines;
std::string line;
while (std::getline(file, line)) {
lines.push_back(line);
}
// 检查要读取的行数是否超过文件中的行数
if (lines.empty()) {
std::cout << "The file does not contain any lines." << std::endl;
file.close();
return 1;
}
std::random_device rd;
std::mt19937 gen(rd());
std::uniform_int_distribution<> dis(0, lines.size() - 1);
int randomIndex = dis(gen);
std::cout << "Random line: " << lines[randomIndex] << std::endl;
file.close();
return 0;
}
这些是一些可能导致“浮点异常(核心转储)”错误的常见原因和解决方法。你可以根据具体情况进行调试和修改代码。希望对你有帮助!
领取专属 10元无门槛券
手把手带您无忧上云