C++ 这条线是什么意思?一半+;=字符串(freq[i]/2,i+;';a';);

C++ 这条线是什么意思?一半+;=字符串(freq[i]/2,i+;';a';);,c++,C++,这条线是什么意思 half += string(freq[i] / 2, i + 'a'); 在这个代码中 void printAllPossiblePalindromes(string str) { int freq[M]; if (!isPalin(str, freq)) return; int l = str.length(); string half = ""; char oddC; for (int i = 0;

这条线是什么意思

half += string(freq[i] / 2, i + 'a'); 
在这个代码中

void printAllPossiblePalindromes(string str)
{
    int freq[M];

    if (!isPalin(str, freq))
        return;

    int l = str.length();

    string half = "";
    char oddC;
    for (int i = 0; i < M; i++)
    {
        if(freq[i] % 2 == 1)
            oddC = i + 'a';

        half += string(freq[i] / 2, i + 'a');
    }

    string palin;

    do
    {
        palin = half;
        if (l % 2 == 1)
            palin += oddC;
        palin += reverse(half);
        cout << palin << endl;
    }
    while (next_permutation(half.begin(), half.end()));
}
void printAllPossiblePalindromes(字符串str)
{
整数频率[M];
如果(!isPalin(str,freq))
返回;
int l=str.length();
字符串半=”;
char-oddC;
for(int i=0;i
string (size_t n, char c);
哪个是填充构造函数:

用字符c的n个连续副本填充字符串

因此,您正在使用创建string类的onInstance

size\u t n
替换为:
freq[i]/2
char c
i+'a'

当您执行以下操作时,该字符串对象将连接到对象
half

half += string(freq[i] / 2, i + 'a'); 

为了清楚起见,我刚刚编辑了您答案的措辞。如果您不同意,请回滚。
I+'a'
正在尝试将一个小整数添加到'a'以获得另一个字符。人们的期望可能是,
'a'+25=='z'
-标准不能保证这一点,而今天的一些机器也不允许这样做。(该标准确实保证“0”到“9”的等效技巧有效。)
half += string(freq[i] / 2, i + 'a');