【发布时间】:2012-03-06 23:55:59
【问题描述】:
有没有一种简单的方法可以复制 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 字符串相等,多余的空格会影响什么吗?
(这里只使用字符串不是解决方案,因为我需要最小的开销和轻松访问单个字符。)
【问题讨论】:
-
回复:“在这里仅使用字符串不是解决方案,因为我需要最小的开销和轻松访问单个字符”:我强烈怀疑您高估了开销;而且您肯定高估了访问单个字符的难度:
c = s[10]和s[10] = c如果s是std::string,就好像它是char*一样,都可以正常工作。 -
请格式化您的问题。您可以使用反引号表示代码内联和缩进四个空格以获得代码块。
-
使用
std::string,除非你有更好的理由不这样做。 -
std::string 是解决方案。你是在错误地假设它会更贵的情况下工作。
-
抱歉格式化;我不知道反引号是什么意思(撇号似乎没有任何作用)。