gpt4 book ai didi

C++从文本文件读取到const char数组

转载 作者:行者123 更新时间:2023-11-28 03:14:17 29 4
gpt4 key购买 nike

我想将文本文件中的行读入二维字符数组,但没有换行符。

.txt 示例:

TCAGC
GTAGA
AGCAG
ATGTC
ATGCA
ACAGA
CTCGA
GCGAC
CGAGC
GCTAG

...

到目前为止,我有:

ifstream infile;
infile.open("../barcode information.txt");
string samp;
getline(infile,samp,',');
BARCLGTH = samp.length();
NUMSUBJ=1;
while(!infile.eof())
{
getline(infile,samp,',');
NUMSUBJ++;
}
infile.close(); //I read the file the first time to determine how many sequences
//there are in total and the length of each sequence to determine
//the dimensions of my array. Not sure if there is a better way?
ifstream file2;
file2.open("../barcode information.txt");
char store[NUMSUBJ][BARCLGTH+1];

for(int i=0;i<NUMSUBJ;i++)
{
for(int j=0;j<BARCLGTH+1;j++)
{
store[i][j] = file2.get();
}
}

但是,我不知道如何忽略换行符。我希望对数组进行索引,以便我可以使用第一个索引访问一个序列,然后使用第二个索引访问该序列中的特定字符;即 store[0][0] 会给我“T”,但我不希望 store[0][5] 给我“\n”。

此外,顺便说一句,store[0][6],我认为应该超出范围,因为 BARCLGTH 是 5,返回 'G',store[0][7] 返回 'T',store[0 ][8] 返回“A”等。这些是下一行的字符。或者,store[1][0]、store[1][1] 和 store[1][2] 也返回相同的值。为什么第一个设置返回值,它们不应该越界吗?

最佳答案

当您使用 C++ 编写代码时,您可以改为这样做:

std::vector<std::string> barcodes;

std::ifstream infile("../barcode information.txt");

std::string line;
while (std::getline(infile, line))
barcodes.push_back(line);

infile.close();

在此之后, vector barcodes 包含文件中的所有内容。不需要数组,也不需要统计行数。

由于 vector 和字符串都可以像数组一样进行索引,因此您可以使用诸如 barcodes[2][0] 之类的语法来获取第三个条目的第一个字符。

关于C++从文本文件读取到const char数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17430035/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com