【发布时间】:2025-12-27 05:25:07
【问题描述】:
我想从以下字符串的数组(存储在文件中)打印控制台中的每个对象:
{ beforechars [{Object1},{Object2},{Object3}] afterchars }
我是这样做的:
std::ifstream is("content.txt");
std::getline(is, content, '[');
while (std::getline(is,content,'{')) {
std::getline(is,content,'}');
std::cout << content << std::endl;
}
in.close();
但是我得到了这个输出:
Object1
Object2
Object3
] afterchars }
我的理解是,在Object3 迭代之后,ifstream 应该有 "}] afterchars }" 而 while 的守卫不应该是真的,因为没有任何 '{' char... 我说的对吗?哪里错了?
【问题讨论】:
-
std::getline也提取了分隔符,这就是为什么没有}。 -
@LogicStuff 是的,我明白了。我不明白的是为什么控制台打印最后一行如果有任何'{'字符,但正如克里斯托夫所说,
getline如果找不到分隔符,显然会打印整个文件......谢谢!