2011-07-04 54 views
0

我必須接受來自用戶的空格分隔整數,但當我遇到新行時停止。 例如:如何在C++中檢查行結束符?

3 5 7 9 
23 47 
6 

在這個例子中我必須存儲在陣列1 3, 5, 7, 923, 47在陣列2,6在陣列3 不幸的是,我不知道如何檢查線的在C端++ 。請幫助我。

+1

請向我們展示您的代碼。 – MSalters

回答

10

通常的解決方法是用std::getline逐行讀取,然後用std::istringstream來解析每一行。

1

也許不那麼簡單,但這是我多年來一直使用的代碼片段來讀取數據文件。給它一個字符串和一個分隔符,它將返回一個分隔字符串的向量。我通常用它來分解線條,但是如果你有一個奇怪的字符表示一條線的末尾,我想同樣的原則適用。我應該說我沒有寫,但我早已忘記了我在哪裏找到它。

Split(std::string& line, std::string& splitter) 
{ 
    std::vector<std::string> result; 
    if (!line.empty() && !splitter.empty()) 
    { 
    for (std::string::size_type offset = 0;;) 
    { 
     std::string::size_type found = line.find(splitter, offset); 
     if (found != std::string::npos) 
     { 
      std::string tmpString = line.substr(offset, found-offset); 
      if (tmpString.size() > 0) 
      { 
        result.push_back(tmpString); 
      } 
      offset = found + splitter.size(); 
     } else { 
     std::string tmpString = line.substr(offset, line.size()-offset); 

     if (tmpString.size() > 0) 
     { 
       result.push_back(tmpString); 
     } 
     break; 
     } 
    } 
    } 
    return result; 
}