C2664:当我使用str.append(str [i])时,发生错误

时间:2018-03-17 09:10:24

标签: c++ visual-studio-2015

    string s1;
    string s2;
    getline(cin >> fixed, s);
    for (int j = 0; j < s.length(); j++)
    {
        if ((j & 1) == 0)
        {
            s1.append(s[j]);//the type of s[j] is char,but the error still 
                            //happening,
            cout << tmp << endl;
        }
        else
        {
            s2.append(s[j]);
        }
    }
    cout << s1 << " " << s2 << endl;

C2664“ 的std :: basic_string的,性病::分配器&GT; &amp; std :: basic_string,std :: allocator&gt; :: append(const std :: basic_string,std :: allocator&gt;&amp;)“:无法将elem 1格式”char“转换为”std :: initializer_list&lt; _Elem&gt ;”

1 个答案:

答案 0 :(得分:3)

append()没有超载需要一个char。看看这里:

http://en.cppreference.com/w/cpp/string/basic_string/append

只有一个重载需要一个char

basic_string& append( size_type count, CharT ch );

所以,你可以使用它:

 s1.append(1, s[j]);

或者,改为使用operator+=

s1 += s[j];