程序2应显示111,222和333作为x,y,z的结果。 我想读取文本文件,行到行,并将一行保存到一个变量 喜欢: Line1 = x LINE2 = Y Line3 = z 有人能帮助我吗?
计划1
#include <iostream>
#include <fstream>
#include <cstdlib>
using namespace std;
float x, y, z;
int main()
{
x=111;
y=222;
z=333;
ofstream meuarquivo;
meuarquivo.open ("brasil.txt");
meuarquivo << x << "\n";
meuarquivo << y << "\n";
meuarquivo << z << "\n";
meuarquivo.close ();
return 0;
}
计划2
#include <iostream>
#include <fstream>
#include <cstdlib>
using namespace std;
float x, y, z;
int main(){
x=0;
y=0;
z=0;
char nomedoarquivo[90];
ifstream objeto;
cin.getline (nomedoarquivo, 90);
objeto.open (nomedoarquivo);
if (!objeto.is_open ()){
exit (EXIT_FAILURE);}
while (objeto.good()){
string r;
objeto >>r;
}
cout << "\n" << x << "\n" << y << "\n" << z << "\n";
return 0;
}
答案 0 :(得分:1)
第二个程序需要从文件中读取输入。但该程序没有打开第一个程序写入的文件。
push_back
每个读取字符串到向量,直到到达文件末尾。迭代向量并使用std::string
转换atoi
。
int readNumber = atoi((*iter).c_str()) ;
这应该会给你一个想法。
答案 1 :(得分:1)
代码段
while (objeto.good()){
string r;
objeto >>r;
}
基本上意味着您将每个数字作为字符串读取,并在循环范围结束时立即将其丢弃。相反,我建议创建一个大小为3的浮点数组,使用循环读入它们,然后将每个元素的值分配给x,y和z,如下所示:
float vals[3];
int i = 0;
while (objeto.good()) {
objeto >> vals[i];
i++;
}
x = vals[0]; y = vals[1]; z = vals[2];