C++ C++;函数`getline()`不';无法为char[]正常工作

C++ C++;函数`getline()`不';无法为char[]正常工作,c++,ifstream,getline,C++,Ifstream,Getline,我需要从一行中提取前150个字符,并将它们保存在char[]数组中(不允许使用字符串)。我下面的代码不起作用,我就是找不到原因: #包括 #包括 使用名称空间std; int main() { ifstreammyfile; myFile.open(“message.txt”); 如果(!myFile.is_open())无法读取第一行的前150个字符,则不需要while循环。并且不需要null手动终止缓冲区,istream::getline()将为您执行此操作,例如: #包括 #包括 使用名称

我需要从一行中提取前150个字符,并将它们保存在char[]数组中(不允许使用字符串)。我下面的代码不起作用,我就是找不到原因:

#包括
#包括
使用名称空间std;
int main()
{
ifstreammyfile;
myFile.open(“message.txt”);

如果(!myFile.is_open())无法读取第一行的前150个字符,则不需要
while
循环。并且不需要null手动终止
缓冲区,
istream::getline()
将为您执行此操作,例如:

#包括
#包括
使用名称空间std;
int main()
{
ifstream myFile(“message.txt”);
如果(!myFile.is_open())
{

您是否知道文件已成功打开..如何打开?如果一行中少于150个字符,并且在最后一个字符
getline
read和您在位置150处添加的空终止符之间有一堆未初始化的垃圾,会发生什么情况?为什么要费心处理
char[]
在这种情况下?除非它实际上需要是一个缓冲区,比如在二进制模式下读取。使用
std::string
std::getline()
zero初始化所有元素。我无法重现此行为。我所做的只是将
#include
更改为
#include
(假设这是创建问题的输入错误,并且实际的代码已编译!)它可以工作,包括示例
message.txt
。太棒了!它读取除最后一行之外的所有行,并排除第150行之后的所有字符。我们越来越近了!程序在最后一行之前停止的原因是什么?@DanielHalachev你自己说的-排除了第150行之后的所有字符。在文本文件y中如果您提供,
hello
行在使用CRLF换行符的情况下从第181个字符开始,或者在使用裸CR或裸LF换行符的情况下从第177个字符开始。这两个字符都远远超出了150个字符的限制。那么您希望发生什么呢?哦,看起来我不够清楚。我希望程序从每行读取最多150个字符f文件。很抱歉造成混淆。@DanielHalachev这与您最初发布的要求非常不同。我已经更新了我的答案。非常感谢!我已经为这个问题工作了一周,希望找到一个函数来解决这个问题,我问了几个关于如何解决这个问题的问题。再次感谢您非常感谢。疼痛终于结束了。