При чтении из файла с помощью getline () между каждым символом появляются пробелы? - PullRequest
0 голосов
/ 08 мая 2018

Я разрабатываю программу, которая берет список каталогов, используя "dir> music.txt". Моя цель - убрать разрешения и дату из файла и разложить по алфавиту список исполнителей. При использовании «getline (file, input) между каждым символом появляются пробелы, когда переменная« input »отправляется на экран. Вот код:

#include "stdafx.h"

using namespace std;

void AlphaSort(string (&data)[300], int size);
void PrintArray(string(&data)[300]);

// This program will read in an array, the program will then remove any text 
// that is before 59 characters, then the program will remove any spaces that 
// are not succeeded by letters.
int main()
{
    fstream file;
    string input;
    string data[300];
    file.open("music.txt");

    while (getline(file, input))
    {
        cout << input << endl;
        // Scroll through the entire file. Copy the lines into memory
        for (int i = 0; i <= input.length() - 1; i++)
        {
            // Process input here...
        }
    }

    // The array has been loaded into memory, run the sort
    //AlphaSort(data, 300);
    //PrintArray(data);

    return 0;
}

Ниже приведен пример вывода:

d - - - - -                   8 / 7 / 2 0 1 7     1 1 : 1 5   A M                                 E i f f e l   6 5                                                                                                                           
 d - - - - -                   8 / 7 / 2 0 1 7     1 1 : 1 9   A M                                 O n e   R e p u b l i c
 d - - - - -                   8 / 7 / 2 0 1 7     1 1 : 1 8   A M                                 M a r o o n   5      
 d - - - - -                   8 / 7 / 2 0 1 7     1 1 : 1 8   A M                                 L u m i n e e r s    
 d - - - - -                   8 / 7 / 2 0 1 7     1 1 : 1 8   A M                                 M y   C h e m i c a l   R o m a n c e
 d - - - - -                   8 / 7 / 2 0 1 7     1 1 : 1 4   A M                                 B o b   M a r l e y  
 d - - - - -                   8 / 7 / 2 0 1 7     1 1 : 1 9   A M                                 P a r a m o r e      
 d - - - - -                   8 / 7 / 2 0 1 7     1 1 : 1 7   A M                                 I n c u b u s        
 d - - - - -                   8 / 7 / 2 0 1 7     1 1 : 1 4   A M                                 C a r p e n t e r s  
 d - - - - -                   8 / 7 / 2 0 1 7     1 1 : 1 5   A M                                 F a i t h   N o   M o r e
 d - - - - -                   8 / 7 / 2 0 1 7     1 1 : 1 2   A M                                 B a s t i l l e      
 d - - - - -                   8 / 7 / 2 0 1 7     1 1 : 1 6   A M                                 F r a n k i e   G o e s   T o   H o l l y w o o d
 d - - - - -                   8 / 7 / 2 0 1 7     1 1 : 1 7   A M                                 H o o b a s t a n k  

Как видите, между каждым персонажем есть пробелы. Я смотрел на это в течение последнего часа. Есть ли более «правильный» способ ввода из файла? Ниже находится входной файл, который не содержит пробелов между каждым символом:

d-----         8/7/2017  11:15 AM                Eiffel 65                                                             
d-----         8/7/2017  11:19 AM                One Republic                                                          
d-----         8/7/2017  11:18 AM                Maroon 5                                                              
d-----         8/7/2017  11:18 AM                Lumineers                                                             
d-----         8/7/2017  11:18 AM                My Chemical Romance                                                   
d-----         8/7/2017  11:14 AM                Bob Marley                                                            
d-----         8/7/2017  11:19 AM                Paramore                                                              
d-----         8/7/2017  11:17 AM                Incubus                                                               
d-----         8/7/2017  11:14 AM                Carpenters                                                            
d-----         8/7/2017  11:15 AM                Faith No More                                                         
d-----         8/7/2017  11:12 AM                Bastille                                                              
d-----         8/7/2017  11:16 AM                Frankie Goes To Hollywood                                             
d-----         8/7/2017  11:17 AM                Hoobastank                                                            
d-----         8/7/2017  11:21 AM                Young The Giant                                                       
d-----         8/7/2017  11:15 AM                Disturbed                                                             
d-----         8/7/2017  11:12 AM                Authority Zero                 

1 Ответ

0 голосов
/ 08 мая 2018

Я разрабатываю программу, которая использует список каталогов, используя "dir> music.txt".

Не. Если вы хотите работать с содержимым каталога, работайте с ним напрямую.

Моя цель состоит в том, чтобы удалить разрешения и дату из файла и разместить в алфавитном порядке список исполнителей.

Если бы вы не использовали dir, у вас не было бы разрешения и информации о дате.

Кроме того, C ++ не является хорошим инструментом для решения этой задачи. Кажется, вы работаете в Windows, поэтому попробуйте написать сценарий PowerShell или, если у вас установлены инструменты Unix-ish, bash. Это должно быть довольно просто.

...