繁体   English   中英

如何将文件中的数字放在向量矢量中?

[英]How to put numbers from a file in a vector of vectors?

我正在尝试只读取一个填充数字的文件,没有空格。 我需要在矢量向量中将这些数字设置为四到四。 在这里,我尝试过但没有用,因为没有显示任何东西。

vector<vector<int>> vectorReader(string path) {
    ifstream file( path );
    int i;
    char bit;
    vector<vector<int>> fle;
    vector<int> word;

    i = 0;

    if(file.is_open()){
        while(file >> bit){
            if(i % 4 == 0) {
                fle.push_back(word);
                vector<int> word;
            }
            else {
                word.push_back((bit - 48));
                i++;
            }
        }
    }
    else{
        cout << "Error!.\n\n";
    }

    fle.erase( fle.begin() );

return fle;
}


int main(){
    string path = "file.txt";

    vector<vector<int>> file = vectorReader( path );
    for(const auto &line : file) {
        for(const auto &val : line) {
            cout << val;
        }
        cout << endl;
    }

    return 0;
}

file.txt的

0110010010100101100111110011111010011011001011100001111110001100101100

预期产量:

0110
0100
1010
0101
1001
1111

你的逻辑是错误和奇怪的。 这是一个正确的版本:

vector<vector<int>> vectorReader(string path) {
  ifstream file(path);
  char bit;
  vector<vector<int>> vec;
  vector<int> word;

  int i = 0;

  if (file.is_open()) {
    while (file >> bit) {
      word.push_back((bit - '0'));    // add digit in word vector

      if (++i % 4 == 0) {             // if 4 digits have been added to word vector
        vec.push_back(word);          //   add word to vec vector
        word.clear();                 //   and clear word vector for next iteration
      }
    }
  }
  else {
    cout << "Error!.\n\n";
  }

  return vec;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM