有没有一种简单的方法来复制C字符串?
我有一个const char *stringA
,我想让char *stringB
获取这个值(请注意,stringB
不是const
)。我尝试了stringB=(char*) stringA
,但这使得stringB
仍然指向同一个内存位置,所以当stringA
稍后更改时,stringB
也会更改。
我还尝试过strcpy(stringB,stringA)
,但如果stringB
未初始化为足够大的数组,则会出现段错误。虽然我对C字符串不是非常熟悉,但我是否遗漏了一些明显的东西?
如果我只是将stringB
初始化为char *stringB[23]
,因为我知道我的字符串永远不会超过22
个字符(包括空终止符),那么这是正确的方式吗?如果将stringB
与其他C字符串进行比较,那么额外的空间会影响任何内容吗?
(在这里仅使用字符串并不是一个解决方案,因为我需要最小的开销和易于访问单个字符。)
s
是std::string
,那么c = s[10]
和s[10] = c
都可以正常工作,就像s
是char*
一样易于访问单个字符。 - ruakhstd::string
。 - bames53