c++ - 在 C++ 中循环遍历 .txt 文件的行
问题描述
总 C++ 初学者,正如标题所说,我试图读取一个逐行循环的 .txt 文件,同时在移动到下一行之前对该行的数据执行计算。
int main() {
ifstream in_file;
string name;
int kiloWatt{};
int amperage{};
int cores{3};
int voltage{480};
double powerFactor{0.8};
double efficiency{0.93};
double root{};
in_file.open("../test.txt");
if(!in_file){
cerr <<"Problem opening file" << endl;
return 1;
}
while (in_file >> name >> kiloWatt){
root = sqrt(cores);
amperage = (kiloWatt*1000)/(root*voltage*powerFactor*efficiency);
cout << setw(10) << name
<< setw(10) << kiloWatt
<< setw(10) << amperage
<< setw(10) << root
<< endl;
}
in_file.close();
return 0;
}
这有效,但是它在第一行之后关闭循环,因此只显示一行....有人指出我为什么?非常感谢。
其引用的 txt 文件如下所示:
name1 23.5
name2 45.6
name3 234.8
解决方案
kiloWatt
是一个 int,所以在第一行,它将读取23
, 看到一个非整数字符并停止。下一个name
将是".5"
,您将尝试读"name2"
入kiloWatt
,这将失败,因为它不是一个数字 - 打破了您的循环。
更改kiloWatt
为双重以解决此问题。
推荐阅读
- php - 我正在使用 spatie/laravel-sitemap 是否可以为这些 url 设置另一个 APP_URL
- opencv - AttributeError:模块“cv2.cv2”没有属性“MORP_CLOSE”
- reactjs - 从 ant design 测试 onChange 属性的问题
- amazon-web-services - 如何在cdk中运行rds sql种子脚本
- android - onPressed 工作是 Debug/Profile/Release 模式,但不能在 Release apk (Flutter) 中工作
- android - 启动 TWA 时出现白屏
- r - 未调整(?)趋势线,ggplot [R]
- c - 在 free(p) 之前 pthread_mutex_destroy(p) 是强制性的吗?
- javascript - 如何确定一个元素的真实可见性?
- prolog - 断言,如果我们输入 6 作为参数,则生成 A = 6, B = 0... A = 4, B = 2... A = 2, B = 4... A = 0, B = 6 并结束