簡體   English   中英

getline 行尾?

[英]getline end of line?

我有一個包含 n 列和 y 行二進制值的文本文件。

我正在使用 getline 提取二進制值的每一行並將它們分配給向量:
我正在使用 getline 提取文件的每一行,其中每一行由一系列用空格分隔的“0”或“1”組成,並將它們分配給一個向量。

std::vector< std::vector<int> > matrix; // to hold everything.
std::string line;
while(std::getline(file,line))
{
  std::stringstream linestream(line);
  int  a,b,c,d;
  linestream >> a >> sep >> b >> sep >> c >> sep >> d;
  std::vector <int> vi;
  vi.push_back(a);
  vi.push_back(b);
  vi.push_back(c);
  vi.push_back(d);
  matrix.push_back(vi);
}

現在的問題是我事先不知道文件中有多少列。 如何循環遍歷每一行,直到到達該行的末尾?

顯而易見的方法是:

while (linestream >> temp >> sep) 
    vi.push_back(temp);

盡管最后一項可能會失敗,但后面可能沒有分隔符。 你有幾個選擇來正確處理這個問題。 一種是典型的“循環半”成語。 另一個是將分隔符視為空格的語言環境

當/如果你這樣做,你可以/也可以使用標准算法:

std::copy(std::istream_iterator<int>(linestream),
          std::istream_iterator<int>(),
          std::back_inserter(vi));

為什么不 while (in1 >> i) row.push_back( i ); 哪個不需要分隔符?

檢查換行符 (\n)。 當你找到一個時,你已經完成了行/列。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM