igorekvp
@igorekvp
Сейчас на пенсии

Можно ли использовать оператор if в таком варианте программы?

char klas[4];
    {
    if(klas=="231")
    {
    ifstream file ("G:\\1\\ЛР1-231.txt");
        if (file.is_open()) // вызов метода is_open()
    cout << "\n\t Все ОК! Файл открыт!\n\n" << endl;
    else
    {
    cout << "\n\t Файл не открыт!\n\n" << endl;
    return -1;
    }

    fstream inOut  ("G:\\1\\ЛР1-231.txt", std::ios::in | std::ios::app);     
    //Открыли для чтения и записи   if(klas=="231")
            if (inOut) {        //Если файл существует, то
       inOut <<"\n" <<"  "<<fam <<" "" \t "<<im<<"   "" \t "<<ot<<" "" \t " 
    <<klas<<" - класс "<<"  "<<"Оценка  -  "<<A0 <<"    "<< now->tm_mday << 
    '-'
     << (now->tm_mon + 1) << '-'
     <<(now->tm_year + 1900)<< endl;    
    }
    file.close();cout << "\n\t Все ОК! Файл закрыт!\n\n" << endl;
    cin.get();
    system("chcp 1251>nul");
    system("color 1f");
    std::string s;
    std::vector<std::string> lines;

    // читаем файл в контейнер построчно
    std::ifstream in_file("G:\\1\\ЛР1-231.txt", std::ios::in);//"r+",
    while(getline(in_file, s))
    lines.push_back(s);
    in_file.close();

    std::sort(lines.begin(), lines.end()); // сортируем контейнер

    // и записываем отсортированный контейнер в новый файл
    std::vector<std::string>::iterator i = lines.begin();
    std::ofstream out_file("G:\\1\\ЛР1-231.txt", std::ios::out);//"r+",
    for(; i != lines.end(); ++i)
    out_file << *i << std::endl;
    out_file.close();
    return 0;
    }
    }
  • Вопрос задан
  • 132 просмотра
Пригласить эксперта
Ответы на вопрос 2
Nipheris
@Nipheris Куратор тега C++
klas=="231"

сравнение не будет работать так как вы ожидаете. Вы сравниваете указатели на строки (т.е. указатели на начало областей памяти, в которых хранятся строки). Т.к. вы хотите сравнить сами строки, т.е. содержимое вышеупомянутых областей памяти, вам нужно либо:
а) воспользоваться функцией strncmp или аналогичными (это путь языка Си).
б) воспользоваться классом std::string из стандартной библиотеки, и сравнивать объекты этого класса. Они уже сраниваются по содержимому (это путь языка C++)
Ответ написан
Комментировать
igorekvp
@igorekvp Автор вопроса
Сейчас на пенсии
klas(4) считывается в начале программы. С чем же его сравнивать?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы