C ++附加到数组

时间:2015-12-22 13:44:10

标签: c++ append

const int fileLength = fileContent.length();
    char test[1000];
    for (int p = 0; p < fileLength; ++p){
        test[p].append(fileContent[p]); // Error: expression must have class type
    };

我正在尝试将文本文件的字符附加到我创建的数组中。虽然我收到错误“表达式必须具有类类型”。尝试谷歌搜索这个错误无济于事。

2 个答案:

答案 0 :(得分:5)

test是一个char数组。 test[p]是一个字符。 char没有任何成员。特别是,它没有append成员。

您可能希望将测试设为std::vector<char>

    const auto fileLength = fileContent.length();
    std::vector<char> test;
    for (const auto ch : fileContent)
    {
        test.push_back(ch);
    }

甚至:

    std::vector<char> test( fileContent.begin(), fileContent.end() );

如果你真的需要将test视为数组(因为你正在连接某些C函数),那么使用:

    char* test_pointer = &*test.begin();

如果你想将它用作以空字符结尾的字符串,那么你应该使用std :: string,并使用test.c_str()获取指针。

答案 1 :(得分:0)

char数组没有名称append的任何成员函数。但是,std :: string确实有一个名为append的成员函数,如下所示:

string& append (const char* s, size_t n);

我认为你错误地使用了char数组而不是std :: string。 std :: string将解决此问题,如下所示:

const int fileLength = fileContent.length();
    string test;
    for (int p = 0; p < fileLength; ++p){
        test.append(fileContent[p],1); // Error: expression must have class type
    };

更好的方法是字符串测试(fileContent)。您可以像数组一样访问测试。有关详细信息,请参阅字符串类。