我需要读取以下格式的文本文件:
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)
那么有没有办法可以使用向量之类的东西?或者也许在这个问题无法解决的情况下,我可以将一串字符转换为一个字符串,然后创建一个字符串向量吗?
为什么不使用std::ifstream和std::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)
| 归档时间: |
|
| 查看次数: |
2044 次 |
| 最近记录: |