C++ 如果向数组中添加另一个字符,则从ifstream分配字符数组会中断数组

C++ 如果向数组中添加另一个字符,则从ifstream分配字符数组会中断数组,c++,arrays,char,fstream,C++,Arrays,Char,Fstream,所以我有一个赋值,它使用字符数组而不是字符串。您可以从.txt文件和ifstream分配数组。我必须编写的一个函数是将数组与另一个数组连接起来。但是,如果我在初始单词后添加任何额外的字符,即使我用大量空间初始化了数组,数组也会中断 input.txt Hi main.cpp #include <iostream> #include <fstream> ifstream in("input.txt"); int main() { char A[50];

所以我有一个赋值,它使用字符数组而不是字符串。您可以从.txt文件和ifstream分配数组。我必须编写的一个函数是将数组与另一个数组连接起来。但是,如果我在初始单词后添加任何额外的字符,即使我用大量空间初始化了数组,数组也会中断

input.txt

Hi
main.cpp

#include <iostream>
#include <fstream>

ifstream in("input.txt");

int main()
{
   char A[50];

   in >> A;
   cout << A << endl;   // expecting to print "Hi"

   A[2] = 't';
   cout << A << endl;   // expecting to print "Hit"

   in.close();
   return 0;
}

而是打印:

Hi
HitpB

<>是否有帮助?

在用索引2替换值之后,忘记在零终止字符数组中添加“0”字符。

打开C++书到解释C风格字符串的章节,具体是什么特殊字符终止它们。一旦您了解了C风格的字符字符串是如何工作的,您应该能够解决自己的问题。我已经知道null终止字符串,我只是假设索引2-49也都是null。谢谢。C++和C有你不支付你不使用作为一个指导原则和零数组有一个成本,所以假设你应该做的是,如果我不这样做自己,这是不会发生的。但在你做出这个假设之前,请查阅可靠的文档、手册、标准文档,看看你是否因为这样或那样的原因被扔到了骨头上。例如,如果char A[50];在全局范围内定义,C++标准保证在您有机会使用之前,整个数组将被取消。@ USER481301谢谢您的建议,这非常有洞察力!下一次,在询问StackOverflow之前,我会确保阅读文档,我试图自己找到答案,但我用谷歌搜索我的特定场景,没有结果,而不是阅读关于数组如何定义的文档。我看到这个问题得到了大量的反对票,我应该在这方面做得更好。谢谢大家的帮助!啊,我假设在所有未使用的空间中已经有null,所以当我添加额外的字符时,我认为在下一个空间中仍然会有null。非常感谢。
Hi
HitpB