我已经在这个项目上工作了一段时间,我们使用ifstream
来读取文本文件的输入。文本文件包含一个双精度数组(每个都应该代表电路的电阻):
例如,1 1 1 0.5 0.5 1 2 3 1
。该程序应该读取这些双打中的三个系列并计算总阻力(1/(1/R1+1/R2+1/R3))
。我的问题是如何以双打的方式阅读这些内容。我知道如何以字符串形式阅读它们并编写了一些我应该工作的代码(但显然没有)。如果你能指出我正确的方向并给我一点帮助,我将不胜感激!谢谢!
我的代码:(很高兴)
int main()
{
ifstream in("input.txt");
vector<vector<string>> data;
string resistors;
while (in)
{
if (!getline(in, resistors))
break;
istringstream line(resistors);
vector<string> record;
while (line)
{
if (!getline(line, resistors, ','));
break;
record.push_back(resistors);
}
string totalResistance;
for (int c = 0; c < resistors.length(); c += 3)
{
totalResistance += 1 / ((1 / resistors[c]) + (1 / resistors[c + 1]) + (1 / resistors[c + 2]));
}
cout << totalResistance << endl;
data.push_back(record);
}
if (!in.eof())
{
cerr << "STOP!" << endl;
}
}
答案 0 :(得分:0)
你可以试试这个:
ifstream input;
input.open("filename", ios::in);
double value_1 = 0, value_2 = 0, value_3 = 0;
input >> value_1 >> value_2 >> value_3;
这是您可以用来读取由空格分隔的三个值的最简单方法。一个稍微复杂的方法是如果你想逐行阅读。在这种情况下,您需要获取可以分隔双值的子字符串。
ifstream input;
input.open("filename", ios::in);
while (!input.eof())
{
double values[3];
string delimiter = " ", token, line;
size_t pos, index = 0;
getline(input, line);
while ((pos = line.find(delimiter)) != std::string::npos)
{
token = line.substr(0, pos);
istringstream i(token);
i >> values[index++];
line.erase(0, pos + delimiter.length());
}
istringstream i(line);
i >> values[index];
}
我没有执行代码,我希望它可以工作。请包含必要的头文件。