我想将包含密码的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);
如果您知道解决此问题的另一种方法,请发表评论。我不需要使用此功能。
答案 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