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
};
我正在尝试将文本文件的字符附加到我创建的数组中。虽然我收到错误“表达式必须具有类类型”。尝试谷歌搜索这个错误无济于事。
答案 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)。您可以像数组一样访问测试。有关详细信息,请参阅字符串类。