C++ 尝试连接两个字符串时出错

C++ 尝试连接两个字符串时出错,c++,C++,我有两个字符串,我想把它们连接起来,所以,我使用了以下代码 char*a=“Hel”; char*b=“lo”; strcat(a,b)但是当我运行我的应用程序时,它会显示这个错误访问冲突写入位置它们都是(a和b)字符串文本--您不能写入它们。事实上,您不应该使用char*a=“Hel”一点也不--您应该使用char const*a=“Hel”,在这种情况下,代码甚至不会编译 请尝试以下方法: std::string a = "Hel"; std::string b = "lo"; std::

我有两个字符串,我想把它们连接起来,所以,我使用了以下代码
char*a=“Hel”;
char*b=“lo”;
strcat(a,b)但是当我运行我的应用程序时,它会显示这个错误
访问冲突写入位置

它们都是(
a
b
)字符串文本--您不能写入它们。事实上,您不应该使用
char*a=“Hel”一点也不--您应该使用
char const*a=“Hel”,在这种情况下,代码甚至不会编译

请尝试以下方法:

std::string a = "Hel";
std::string b = "lo";

std::string c = a + b;

<>代码> StrCAS/COD> C++(即使使用正确)也是最可疑的。

<代码>代码< A/COD>指向一个不能修改的文字,在代码> > StrCAT//COD>需要在目的地中的空间来附加<代码> SRC < /Cord>字符串。正如Jerry所提到的,您可以只使用
std::string
,这使事情变得更简单。如果您需要使用
char*
,那么您可以这样做:

char str[20] ;

strcat( str, "Hel" ) ;
strcat( str, "lo" ) ;

尽管如此,旧的
C
风格的字符串方法都不是很好用,除非你只是为了学习。如果你打算大量使用它们,你应该至少读几篇文章。

只是扩展杰里·科芬的话

std::string
解决方案类似于:

char str[10];
strcpy(str,"Hel");
strcat(str,"lo");

但是
std::string
通常更好。

第一个声明将“a”作为指针变量,指向四个字节的内存,其中包含字符“H”、“e”、“l”和字节0。strcat将“l”写入第四位,超过零字节,然后将“o”写入第四个字节后的位置。内存中的那个地方不是你可以写的,所以你会出错。相反,请确保目标位置有足够的空间容纳连接的字符串。如果可能的话,不要单独使用strcat,而是使用更安全的工具,如strncat。

请参阅以下参考资料之一

您应该尽可能多地使用cplusplus.com上的参考页面


还有手册页:
man strcat
,如果您在Unix系统中,请从Unix命令行下载,尽管它们可以在线找到。

很抱歉。你有没有试着用谷歌搜索错误或读取strcat的文档。这两个字符串都应该声明为const,因为它们是指向文本2的指针。字符串a太小,不适合两者的串联。3.你应该使用std::string。你很幸运它不起作用。