从第一天开始,我在使用C ++打开文件时遇到了问题,而且我遇到了让特定文件再次打开的问题。难道我做错了什么?我已经尝试了这个部分,有了和没有“.txt”之后,以及将它放入C盘并试图以那种方式得到它,但它仍然不起作用。
代码:
ifstream correctAnswers;
ifstream studentAnswers;
correctAnswers.open("C:\CorrectAnswers");
studentAnswers.open("C:\StudentAnswers");
if (correctAnswers && studentAnswers) {
for (int i = 0; i < SIZE; i++) {
correctAnswers >> answerKey[i];
studentAnswers >> studentKey[i];
}
}
else {
cout << "error" << endl;
}
错误部分一直显示,所以我假设它意味着文件没有打开或文件的内容被复制到数组中。
答案 0 :(得分:2)
您的文件名字符串中需要双反斜杠。
correctAnswers.open("C:\\CorrectAnswers");
studentAnswers.open("C:\\StudentAnswers");
答案 1 :(得分:2)
C(C ++)字符串中的'\'
引入了转义序列。要获得实际的'\'
,您需要逃避逃脱 - 即"C:\\CorrectAnswers"
。
一个好的编译器(带有正确的错误/警告配置)通常会说“Unknown escape sequence \ C”。
答案 2 :(得分:0)
哦,我的主人。感谢你们。我在这里有一个完整的程序因为特定的部分而无法工作。我还必须添加&#34; .txt&#34;最后指向正确的方向。 ;)
public ActionResult Index(int? page)
{
var cookie = new HttpCookie("view", "admin");
var portalViewModel = new List<PortalViewModel>();
var vehicles = db.Vehicles.ToList();
var totalNumberOfUrgentItems = 0; // first total
var totalNumberOfItemsRequireingAttention = 0; // second total
foreach (var vehicle in vehicles)
{
var vm = new PortalViewModel { Vehicle = vehicle };
if (vehicle.MotDate == null)
{
vm.MotNotRecorded = true;
vm.NumberOfUrgentItems++;
}
if (vehicle.TaxDate == null)
{
vm.TaxNotRecorded = true;
vm.NumberOfUrgentItems++;
}
if (vehicle.MotDate <= DateTime.Now.AddYears(-1))
{
vm.MotExpired = true;
vm.NumberOfUrgentItems++;
}
if (vehicle.TaxDate != null && DateTime.Now.Subtract((DateTime)vehicle.TaxDate).Days >= 7)
{
vm.TaxWithin7Days = true;
}
else if (vehicle.TaxDate != null && DateTime.Now.Subtract((DateTime)vehicle.TaxDate).Days >= 30)
{
vm.TaxWithin30Days = true;
}
totalNumberOfUrgentItems += vehicle.NumberOfUrgentItems;
totalNumberOfItemsRequireingAttention += vehicle.ItemsRequireingAttention;
portalViewModel.Add(vm);
}
ViewBag["TotalNumberOfUrgentItems"] = totalNumberOfUrgentItems;
ViewBag["TotalNumberOfItemsRequireingAttention"] = totalNumberOfItemsRequireingAttention;
// presumably your return statement is here
}