如何将.txt文件中的特定整数存储在结构数组中
How to store specific integers from a .txt file in an array of structures?
在一个名为"data.txt"的文件中有1-4个数字(例如2 1 2 4 1 3…)。我需要读取这些数字,并创建每个100个数字的字符串。之后,我需要计算每个字符串中有多少个1、2、3和4。这就是我目前所拥有的:
//structure
struct DNAnt
{
int a, c, g, t;
string strand;
};
void data2DNA();
//main
int _tmain(int argc, _TCHAR* argv[])
{
data2DNA();
cin.get();
return 0;
}
//function
void data2DNA()
{
DNAnt DNAstrand[100];
ifstream inFile;
int numbers;
inFile.open("data.txt");
if(inFile.is_open())
{
while(!inFile.eof())
{
inFile >> numbers;
}
}
else
cout << "ERROR!";
inFile.close();
}
这个程序目前所做的就是从文件中读取所有数据。我不知道如何从这里继续。
在C++中,经常需要使用循环来多次重复一个操作。在你的情况下,我相信你可以从for循环中受益。下面是一个循环的例子,它将读取100个整数,并将每个整数存储到数组中靠近主元素开头的位置:
int i;
for(i = 0; inFile && i < 100; ++i) { //i will range from 0 to 99
inFile >> DNAstrand[i];
}
//now use DNAstrand to do stuff
我之所以说inFile &&
是为了确保inFile不在eof。
从一个从文件中读取数字的非常简单的程序开始。
只要读一下就行了。不要解读它们,因为在你能够证明它们被正确解读之前,试图对这些数字做任何事情都没有意义。所有额外的代码都会搅乱确保你阅读正确的水域,并向你隐藏错误的位置。
vector<int> readFile()
{
vector<int> numbers;
为什么是矢量?因为这是存储未知数量条目的最简单方法。在这一点上,不要玩更复杂的结构,也不要试图自己滚动。如果教练说,"没有矢量"哦。但这是你交的。你用来证明算法有效的是另一回事。
ifstream inFile("data.txt");
这也会打开文件,这样你以后就不必这样做了
if(inFile.is_open())
{
int number;
while(inFile >> number)
这将读入一个int。如果由于任何原因无法读取int,它将停止并离开循环。如果文件格式不正确,并且包含无法转换的数据,我们就离开这里。如果它到达文件的末尾,我们就离开这里。
{
numbers.push_pack(number);
否则,我们将读取的数字放入向量中。
}
}
else
{
cout << "ERROR opening file";
)
不需要关闭文件。当我们到达函数的末尾时,inFile
的析构函数将启动并为我们执行
return numbers;
并将矢量发送回调用者,以便他们可以使用他们认为合适的矢量。这里可以发生很多有趣的事情来防止向量在返回时被复制,所以不用担心。
}
总之:
void data2DNA()
{
vector<int> numbers;
ifstream inFile("data.txt");
if(inFile.is_open())
{
int number;
while(inFile >> number)
{
numbers.push_pack(number);
}
}
else
{
cout << "ERROR opening file";
)
return numbers;
}
既然你有了数据,你就可以把它变成一系列核酸了。
对于这一部分,我将推荐一个阵列
const char tags[] = {'-', 'A', 'C', 'G', 'T'};
索引1到4是A、C、G和T,因此tags[2]
将提供'C'
。这使得从数字到标签的转换非常非常容易。
一旦你有了标签,你就可以把它附加到DNA串上。
- 添加存储在向量中的大整数的函数出现问题
- 查找存储在二叉搜索树的所有非叶子中的数据总和?(返回整数的独立递归函数
- 整数数据如何以位为单位存储在内存中?不是右对齐吗?
- 当我尝试将范围值存储为 8 位的固定宽度整数时,它向我显示一些其他值 [ASCII]
- 将大数字(10-12 位数字)存储在无序映射中<字符串,整数>
- GMP-将64位整数存储在mpz_t/mpz_class中,并返回64位整数
- 如何从字符数组C++中提取2个整数并将它们存储在2个变量中(初学者)
- 从文件中读取后,将分号分隔的整数存储到数组中
- 将25个甚至整数存储到一个名为intlist的整数阵列中,然后在屏幕上显示数组,并在屏幕上显示名为fivintegers
- 如何将整数存储在字符阵列中
- 将 10 个整数存储到数组C++中时出现问题
- 将多个整数存储在字符串中
- 将多个整数存储到数组中并打印出来
- 如何将用户输入的 5 个整数存储在数组中并打印出整个数组
- 在 c++ 中将随机生成的整数存储为变量
- 如何将整数存储在字符数组的单个索引中
- C++ 读取文件并将整数存储在向量中.最终占用的驻留内存大约是实际文件大小的 5 倍
- 如何将.txt文件中的特定整数存储在结构数组中
- 将文件中的64*64整数存储到2D数组中
- C++将多个整数存储在一个int变量中