C ++从文件读取多行到单个字符串

时间:2018-02-08 23:25:21

标签: c++ string file file-io

我有一个dna.txt的输入文件,看起来像下面的内容。我试图将所有字符读取为单个字符串,并且我不允许使用字符数组。我该怎么做呢

cggccgattgtattctgtatagaaaaacac
atacagatggattttaactagagc
aagtcgcaataaccagcgagtattaca
cctcgaccaaatcctcgaattctc

1 个答案:

答案 0 :(得分:1)

尝试以下方法:

std::string dna;
std::string text_read;
while (getline(input_file, text_read))
{
    dna += text_read;
}

在上面的循环中,每一行都被读入一个单独的变量 读取该行后,将其附加到DNA串。

编辑1:工作程序示例:
注意:在某些平台上,缓冲区中可能有\r',导致部分在显示时被覆盖。

#include <iostream>
#include <fstream>
#include <string>

int main()
{
    std::ifstream input_file("./data.txt");
    std::string dna;
    std::string text_read;
    while (std::getline(input_file, text_read))
    {
        const std::string::size_type position = text_read.find('\r');
        if (position != std::string::npos)
        {
            text_read.erase(position);
        }
        dna += text_read;
    }
    std::cout << "As one long string:\n"
              << dna;
    return 0;
}

输出

$ ./dna.exe
As one long string:
cggccgattgtattctgtatagaaaaacacatacagatggattttaactagagcaagtcgcaataaccagcgagtattacacctcgaccaaatcctcgaattctc

文件&#34; data.txt&#34;:

cggccgattgtattctgtatagaaaaacac
atacagatggattttaactagagc
aagtcgcaataaccagcgagtattaca
cctcgaccaaatcctcgaattctc

在Cygwin终端上使用g++版本5.3.0编译的程序。

使用gdb调试程序找到了问题。

相关问题