【发布时间】:2014-06-20 16:56:23
【问题描述】:
伪代码:
#include <iostream>
#include <fstream>
#include <sstream>
#include <string>
using namespace std;
int main() {
string line;
double beta[250];
char Batob[250], eq[250];
ifstream myfile("iter1/HMMemit0.txt");
if (myfile.is_open())
{
int i = 0;
while (getline(myfile, line))
{
istringstream iss(line);
if (!(iss >> Batob[i] >> eq[i] >> beta[i])){ //it store only B in Batob[i], but i want to save B00 in Batob[i], = in eq[i], and 0.524671 in beta[250]
break;
}
i++;
}
myfile.close();
}
else cout << "Unable to open file";
return 0;
}
我的数据像这样存储在 HMMemint0 中
B00 = 0.524671
B01 = 0.001000
B02 = 0.001000
B10 = 0.001097
B11 = 0.001000
B12 = 0.001000
我想读取一行并将每个术语保存在每个变量中,例如保存在 name[i] 中的 B00,以及保存在 beta[i] 中的 0.001000。 然后,像这样写成这个 0.524671(B00 的值) 0.001097(B10 的值) 的顺序
0.524671 0.001097
0.001000 0.001000
0.001000 0.001000
我该怎么做?请帮帮我。
【问题讨论】:
-
B00s 的 char[] 是一个字符串列表。
-
由于
Batob和eq都是字符数组,因此您的读数会将'B'读入Batob[i],并将第一个数字读入eq[i]。它们都需要是字符串。 -
另外,您可能想了解
std::map,它是键值对的数据结构,您在输入文件中似乎也有这种结构。