Ошибка: выражение должно иметь целочисленный тип или тип enum с незаданной областью при чтении d_name - PullRequest
0 голосов
/ 05 декабря 2018

Мне нужно проверить, заканчивается ли имя файла .config в папке.Поэтому я использую приведенный ниже код.

#include "stdafx.h"
#include <stdio.h>
#include <sys/types.h>
#include <dirent.h>
#include <fstream>
#include <iostream>
using namespace std;


void main(){
DIR *dirp;
struct dirent *dp;
char prnStr[254];

if ((dirp = opendir("D:/New folder/")) == NULL) {
        cout << "Could not open directory!!";
        return;
    }
    if ((dp = readdir(dirp)) != NULL) {
        prnStr << dp->d_name;
        size_t findprn = prnStr.str().find(".config");

        if ((int)findprn != -1) {
            cout << "Found .config File!!!!!";
        }
        else {
            cout << "No .config files detected at this time...";
        }
    }
   }

Получение ошибки в этой строке prnStr << dp-> d_name;как Ошибка: Выражение должно иметь целочисленный или незаданный тип enum

1 Ответ

0 голосов
/ 05 декабря 2018

Звучит так, как будто вы хотите использовать std::ostringstream.Измените prnStr на такой объект.

Измените строку

char prnStr[254];

на

std::ostringstream prnStr;

В отдельной заметке вы ищете .config файл.Возможно, вам следует изменить строку

        cout << "Found .prn File!!!!!";

на

        cout << "Found .config File!!!!!";

и изменить

        cout << "No .prn files detected at this time...";

на

        cout << "No .config files detected at this time...";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...