从文件中读取未知长度的字符串

Ale*_*vic 1 c++ file scanf

我需要读取以下格式的文本文件:

n k
S1
S2
S3
.
.
.
Sn
Run Code Online (Sandbox Code Playgroud)

N 是整数,S 是字符串。现在,据我所知,无法使用 fscanf 函数读取字符串,而是必须使用字符数组。问题是我需要设置字符数组的长度,即使我无法知道一个单词有多长:

in = fopen("01.in", "r");

int N, k;

fscanf(in, "%d %d", &N, &k);

for (int i=0; i<N; i++){
    char temp[100];
    fscanf(in, "%s", temp);
}
Run Code Online (Sandbox Code Playgroud)

那么有没有办法可以使用向量之类的东西?或者也许在这个问题无法解决的情况下,我可以将一串字符转换为一个字符串,然后创建一个字符串向量吗?

Gal*_*lik 5

为什么不使用std::ifstreamstd::getline ,如下所示:

std::ifstream in("01.in");

int N, k;

if(!(in >> N >> k))
{
    std::cerr << "Error reading file!" << '\n';
    return EXIT_FAILURE;
}

std::string line; // read lines into this

int i = 0;
while(i < N && std::getline(in, line))
{
    // deal with line here

    ++i; // keep track
}
Run Code Online (Sandbox Code Playgroud)