C++ strcat() 实际上是如何工作的?

问题描述 投票:0回答:1

我很难使用 strcat() 将 char 添加到 char 数组,我在下面尝试过

#include <iostream>
#include <cstring>
using namespace std;

int main() {
  char myStr[20] = "";
  const char a = 'T';
  const char b = 'H';
  strcat(myStr, &a);
  strcat(myStr, &b);
  strcat(myStr, "\0");
  cout << myStr;
  return 0;
}

并期望看到输出“TH”,然而,实际输出是“THHTH”。

然后我尝试了下面的代码

#include <iostream>
#include <cstring>
using namespace std;

int main() {
  char myStr[20] = "";
  const char a = 'T';
  const char b = 'H';
  strcat(myStr, &a);
  strcat(myStr, &b);
//  strcat(myStr, "\0");
  cout << myStr <<'\0';
  return 0;
}

输出变为“THH”。

我不明白为什么输出不是我所期望的——“TH”。

请提供任何帮助,我们将不胜感激。 预先感谢您。

c++
1个回答
0
投票

感谢回答问题的人,非常有帮助。 就像 Peter 所说的那样,strcat() 要求两个参数都是 char 数组(也称为字符串)。我的代码最终可以与 strncat() 一起使用,如下所示。

#include <iostream>
#include <cstring>
using namespace std;

int main() {
  char myStr[20] = "";
  char a = '\T';
  char b = '\H';
  strncat(myStr, &a, 1);
  strncat(myStr, &b, 1);
  cout << myStr;
return 0;
}

对于那些推荐 std::string 的人,这是我的第一个想法,但是,我在 Arduino 环境中工作,通常会担心堆碎片。这就是为什么我选择 char 数组来处理字符串。

谢谢大家。

© www.soinside.com 2019 - 2024. All rights reserved.