2017-08-30 36 views
0

我在一個正在學習C++的類中,我們的第一個項目是從文本文件中讀取數據,對此數據執行各種檢查並將其輸出到另一個文件以稍微改變的形式存在。確定文本文件中的值是否唯一

原始數據的列由空格分隔。我們要檢查第一列(一個ID)以確保每一行都有一個唯一的ID。我們也應該檢查第10列以確保它具有四個值之一。我沒有問題檢查第10列,但我有一個問題,檢查每行的ID是否是唯一的。在Java中,我會將每個ID添加到一個向量或數組中,然後檢查向量是否包含每個後續元素,如果是,則會拋出錯誤。但是,我們只允許在我們的項目中包含三個標題。

#include <iostream> 
#include <iomanip> 
#include <string> 

因此,我無法使用向量或數組檢查唯一ID。任何幫助,我會在這裏做什麼,將不勝感激。

+1

擁有一個字符串,它累積了迄今爲止遇到的所有ID的列表,並由不能出現在ID中的某個字符分隔。使用'string :: find'來檢查每個新ID是否已經出現過。 –

+2

如果您只允許這3個標題,您如何從文件讀取數據?或者是文件從命令行輸入到stdin中? –

+0

@BenjaminLindley,我認爲這是管道。老師這樣做 – Pranay

回答

0

您可以在C++中創建一個字符串數組,並將ID存儲在該數組中。然後使用這個循環來檢查重複的元素。

for(int i=0; i<s.length(); i++) 
    { 
     for(int j=i+1;j<s.length();j++) 
     { 
      if(s[i]==[j]) 
      { 
       cout<< s[i] << " is duplicate"; 
      } 
     } 
    } 

希望有所幫助。

0

這樣的事情。自從你正在學習以後,這對課堂練習是很好的。我不推薦用於生產。

class myvector{ 
const int maxsz = 1000; 
std::string data[maxsz]; 
int currentsz; 

void insert(); //increment size; 
std::string get(int); //retrieve an index; 
bool compareToAll(const std::string& val) { 
    for(int i = 0; i < currentsz; ++i) { 
     if(val == data[i]) return true; 
     } 
    return false; 
    } 

}; 

理想情況下,我會使用set或unordered_set。向量是n^2;

既然你在學習,我會建議嘗試重載操作符。

相關問題