在 C++ 中循环遍历 .txt 文件的行
looping through lines of a .txt file in C++
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
是一个整数,所以在第一行,它将读取 23
,看到一个非整数字符并停止。下一个 name
将是 ".5"
,您将尝试将 "name2"
读入 kiloWatt
,这将失败,因为它不是一个数字——打破您的循环。
将 kiloWatt
更改为 double 以解决此问题。
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
是一个整数,所以在第一行,它将读取 23
,看到一个非整数字符并停止。下一个 name
将是 ".5"
,您将尝试将 "name2"
读入 kiloWatt
,这将失败,因为它不是一个数字——打破您的循环。
将 kiloWatt
更改为 double 以解决此问题。