如何将char类型变量附加到字符串?

时间:2018-07-01 19:59:07

标签: c++

我想将包含密码的char变量附加到字符串“您的密码为:”。当我为此使用append函数时,出现一个错误,提示我不能将此函数与string一起使用。 (我只能将其与unsigned int和char一起使用。)

char pass[64];
std::cout << "Enter a password: "; fgets(pass, 64, stdin);    
std::string ssifre = "Your password is: "; ssifre.append(sizeof(pass), pass);

如果您知道解决此问题的另一种方法,请发表评论。我不需要使用此功能。

2 个答案:

答案 0 :(得分:4)

这应该有效:

{
 "error": {
  "errors": [
   {
"domain": "usageLimits",
"reason": "dailyLimitExceededUnreg",
"message": "Daily Limit for Unauthenticated Use Exceeded. Continued use requires signup.",
"extendedHelp": "https://code.google.com/apis/console"
   }
  ],
"code": 403,
"message": "Daily Limit for Unauthenticated Use Exceeded. Continued use requires signup."
}
}

它正在使用+= operator

(请注意,正如@MichaelDoubez在评论中提到的,ssifre += pass; 也可以使用。)

答案 1 :(得分:0)

ssifre.append(sizeof(pass), pass)试图调用append(size_type count, CharT ch)重载版本,该版本附加了ch个计数时间。由于pass[]不是单个char,而是一个字符数组,因此无法使用。

您需要改用append(const CharT* s)重载版本(特别是因为fgets()确保pass[]将以空值终止,并且append(const CharT* s)期望以空值终止的{{ 1}}字符串)。固定的char*数组会衰减为指向第一个char[]元素的char*指针:

char

也就是说,在这种情况下,您实际上不应该使用ssifre.append(pass); 数组。您应该改为在char[]中阅读

std::string