Читать файл и хранить в массиве символов - c ++ - PullRequest
0 голосов
/ 10 ноября 2018

Я пытаюсь открыть файл и сохранить информацию там в массиве символов, однако я не получаю его. Чтобы сохранить в строку, используйте это:

int main(){
string line1;
ifstream myfile;
myfile.open("example.txt");

if(!myfile){
   cout<<"Unable to open the file."<<endl;
   exit(0);
}
while(getline(myfile,line1)){
   ReadFile(myfile);
}

}

И это работает. Когда я использую массив символов, я кодирую так:

int main(){
int size=100;
char line1[size];
ifstream myfile;
myfile.open("example.txt");

if(!myfile){
   cout<<"Unable to open the file."<<endl;
   exit(0);
}
while(myfile.peek()!EOF){
   line1[size]->ReadFile();
}

}

Функция ReadFile выглядит так:

void ReadFile(ifstream &is){
   char aux[100];
   is.getline(aux,100);
}

1 Ответ

0 голосов
/ 10 ноября 2018

Чтобы прочитать массив символов или текст, вы можете использовать std::getline и std::string:

std::string text;
std::getline(myfile, text);

Для обработки текстовых строк в файле:

std::string text;
while (std::getline(myfile, text))
{
  Process_Text(text);
}

Не используйте массивы символов, так как они могут переполниться. Кроме того, вместо использования == для сравнения вам придется использовать strcmp. Всегда проверяйте, что ваш массив символов заканчивается нулевым символом, '\0', в противном случае строковые функции будут выходить за пределы вашего массива, не останавливаясь, пока не будет найдено значение nul.

Редактировать 1: Разделенный пробелом
Чтобы прочитать текст, разделенный пробелами, используйте:

std::string text;
myfile >> text;

Редактировать 2: Подсчет символов в строке
Вы можете считать символы в строке, используя другой массив.

unsigned int frequency[128] = {0}; // Let's assume ASCII, one slot for each character.
// ... read in string
const size_t length(text.length());
for (size_t index = 0; index < length; ++index)
{
  const char letter = text[index];
  ++frequency[letter];
}
...