2016-04-25 5 views
-2

У меня есть следующий текстовый файл, из которого я пытаюсь прочитать каждую строку, а затем сохранить целочисленный компонент и компонент строки отдельно. Вот текст файла:Чтение из текстового файла - Разделительные элементы строки

RUID Name 
4325 name1 
RUID Name 
5432 name2 
6530 name3 
RUID Name 
1034 name4 
2309 name5 

Вот код, который я при попытке чтения с:

int main() 
{ 
    // Initialize Lists 
    LinkedList list1, list2, list3; 

    // Initialize Counter 
    int counter = 0; 


    // Entry containers 
    const int size = 12; 
    char entry[size]; 
    string name[size]; 
    string RUID[size]; 

    // BEGIN: "read.txt" 
    // Open 
    ifstream studDir; 
    studDir.open("read.txt"); 
    // Read 
    while (studDir.is_open()) 
    { 
     if (studDir.eof()) 
     { 
      cout << "Reading finished" << endl; 
      break; 
     } 

     else if (!studDir) 
     { 
      cout << "Reading failed" << endl; 
      break; 
     } 

     studDir.getline(entry, size); 


     if (entry != "RUID Name") 
     { 
      cout << entry << " " << endl; 
     } 

    } 


    return 0; 
} 

Можно ли рекомендовать метод, который позволил бы мне игнорировать строку «RUID Name», а также отделить целочисленную и строчную часть соответствующих строк. Я пробовал несколько стратегий с небольшим успехом. Также я хочу, чтобы затем написать вывод отсортированного списка в текстовый файл.

ответ

1

Вы должны переписать цикл так:

// Entry containers 
const size_t size = 12; 
std::string entry; 
string name[size]; 
string RUID[size]; 
size_t index = 0; 

// ... 

while (index < size && std::getline(studDir,entry)) { 
    if (entry != "RUID Name") { 
     cout << entry << " " << endl; 
     std::istringstream iss(entry); 
     if(!(iss >> RUID[index] >> name[index])) { 
      std::cout << "Reading failed" << endl; 
      break; 
     } 
     ++index; 
    } 
} 
+0

@LokiAstari Yup! –

 Смежные вопросы

  • Нет связанных вопросов^_^