如何将这些元素表达为 c++

How can I express this elements to c++

本文关键字:c++ 元素      更新时间:2023-10-16

嗨,我想用 c++ 向量表达这个<8>> s{ s1, s2,..., sn };n 是文件中元素的编号。因此,我制作了cnt来计算文件中的元素。所以,我编写了这段代码。但我认为我的代码不正确。但我不知道如何解决这个问题。

int cnt;
for (int x = 0; x < sizeof(files) / sizeof(files[0]); x++) {
    std::ifstream f;
    f.open(files[x].c_str(), std::ios::in);
    if (f.good()) {
        while (!f.eof()) {//end of file check
            f >> str;
            bitset<8> s(str);
            cnt++;
            str.clear();
        }
        f.close();
    }
    for (int i = 0; i < cnt; i++){ 
        vector<bitset<8>> s{ s[i] };
    }
}

你的代码可以简化很多。下面是一个示例:

// Create the vector of bitsets. It is empty to start with.
vector<bitset<8>> s;
// Go through each file.
for (int x = 0; x < sizeof(files) / sizeof(files[0]); x++)
{
   // Open the file.
   // std::ifstream f(files[x].c_str()); // For pre C++11.
   std::ifstream f(files[x]);            // For C++11 or later.
   // Define str here.
   // It should not be needed outside the for loop.
   std::string str;
   // Keep reading from the file until read fails.
   while (f >> str)
   {
      // Construct a bitset from the string.
      bitset<8> si(str);
      // Add the bitset to the vector of bitsets.
      s.push_back(si);
   }
   // There is no need to explicitly close the file.
   // The destructor will take care of that.
}

延伸阅读:为什么循环条件中的iostream::eof被认为是错误的?