【问题标题】:How can I copy the first i amount of characters in a character array into another character array in C++?如何将字符数组中的前 i 个字符复制到 C++ 中的另一个字符数组中?
【发布时间】:2016-05-02 02:56:36
【问题描述】:
read(client_sockfd, &chID, 4);
char newID[4];
for(int i; i<5; i++){
     newID[i] = chID[i];
}

我正在通过套接字读取 char chID[4]。我想将前 4 个字符放入 newID。以上是我尝试过的,但是当我将 newID 复制到字符串中并打印出来时,我得到了一些奇怪的输出。有什么指导吗?

【问题讨论】:

  • 你没有i=0;

标签: c++ arrays char copy


【解决方案1】:

您在 for 循环中声明 i 而不初始化它。这就是您获得“奇怪值”的原因。为了纠正,你需要写:

for(int i=0; i&lt;5; i++)

希望这会有所帮助!

【讨论】:

  • 这种方法或 memcpy 有什么不同或有什么好处吗?还是他们在做同样的事情?
  • @anscmc 两者都可以使用。我发布了上述答案以响应您正在使用的特定代码,并指出您为什么得到奇怪的值。哪种方法会更好取决于您到底想要完成什么。其他详细信息here.
【解决方案2】:

只需复制字节:

memcpy(newID, chID, 4);

【讨论】:

    【解决方案3】:

    还有一点需要注意,似乎有些人在这里忽略了:如果 chId 的长度为 4,则循环边界为 i=0;i

    注意:您没有将 chId 复制到字符串中。您正在将其复制到 char 数组中。这可能看起来像语义,但“字符串”在 C++ 中命名了与字符数组不同的数据类型。标题正确,问题描述错误。

    【讨论】:

    • 谢谢,埃里克。关于字符串转换:我没有发布该代码;抱歉,不清楚。在这个循环之后,我使用“string str(newID)”将 newID 复制到 str,然后用 cout 打印出来。我想通过我收到的三个答案,我找到了解决方案。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2015-08-22
    • 1970-01-01
    • 2012-08-15
    • 2015-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-08
    相关资源
    最近更新 更多