【问题标题】:C++: Giving value to array of charsC ++:为字符数组赋予价值
【发布时间】:2012-02-01 01:32:51
【问题描述】:

所以我有这个:

char uloginName[] = "derp";
char mew[33] = "home/home/" << uloginName << "\0";

我正在尝试将 uloginName 与稍后将转换为 char 数组的其余字符串连接起来。但它一直给我一个错误。我不知道该怎么做。 另外,我现在只能使用 char[] 类型;没有字符串。

感谢您的帮助。

【问题讨论】:

  • "\0""" 是等价的;您应该使用mew[upper_bound] = '\0' 以空值终止。
  • 您有几个答案告诉您使用 strcat/strncat,它们是正确的。但他们没有解释为什么你正在做的事情会产生错误。您将整数类型“char”误认为是定义
  • 感谢@CareyGregory,这真的很有帮助。

标签: c++ concatenation arrays


【解决方案1】:
char uloginName[]="derp";
char mew[33]="home/home/";
strcat(mew, uloginName);

您可以在字符数组上使用strcat,只要有足够的空间并且它们以零字节结尾。

【讨论】:

  • 所以我应该改用char uloginName[]="derp\0"; 吗?
  • 那是多余的。当您编写"derp" 时,您已经指定了一个带有零终止符的C 样式字符串。如果你打印sizeof(uloginName),你会看到它已经是 5。如果你愿意,你也可以{'d','e','r','p','\0'}
  • 也谢谢你,我认为strcat() 仅适用于字符串。我现在正在使用 char 类型,为此我使用strncat()。如果我错了,请纠正我。
  • 您的字符数组包含 C 风格的字符串。 “字符串”只是意味着它以零字节终止。除非你单独跟踪长度,否则你将不得不使用它们的字符串这一事实——否则你怎么知道要处理多少字节?
【解决方案2】:

使用strncat()

【讨论】:

    【解决方案3】:

    您似乎正在寻找std::ostringstream,这是一种在 C++ 中处理字符串的通用且不易出错的方法。 strcat()strncat 及其亲属是 C 的遗留物,在 C++ 中应谨慎使用。

    char uloginName[] = "derp";
    std::ostringstream mew;
    mew << "home/home/" << uloginName;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多