Я пишу функцию для программы, которая позволяет студенту копировать текстовый файл шаблона. Эта функция проверяет вход пользователя, чтобы узнать, разрешен ли его желаемый шаблон для его класса.Сравнение со строковым литералом C++
Я получаю сообщение об ошибке «Сравнение со строковым литералом приводит к неуказанному поведению» в строках 21 и 25. Я сделал «cout < < имя», чтобы проверить правильность хранения переменной, что я знаю это не проблема.
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
//TEMPLATE CHECK
//First you check to see if the student is allowed to use the template
int templateCheck()
{
//Declare file name variable
char name[256];
//Prompt for user input
cout << "Enter file name: ";
//Cin user input
cin >> name;
//Begin check
//CS221 is the first template you can't use
if(name == "/home/cs221Temp.txt")
cout << "You are not allowed to use CS221 templates./n";
//CS 321 is the other template you can't use
else if (name == "/home/cs321Temp.txt")
cout << "You are not allowed to use CS321 templates./n";
//Any others are okay (I commented these out since I'm just working on this function by itself)
//else
//copyTemplate();
return 0;
}
использования 'strcmp' вместо' == '. –
или, даже намного лучше, использовать строковый класс C++, который * имеет * перегруженный == оператор. –
Использование 'std :: string' - Еще проще, чем использование' strcmp' –