c++ - 如何改进语法
问题描述
我写的代码似乎有几个语法错误,但代码块没有显示出来。它没有运行程序,而是打开 ios_base.h 并在那里显示一些错误。
错误信息:
error: 'std::basic_streambuf<_CharT, _Traits˛& std::basic_streambuf>_CharT, _Traits>::operator=(const std::basic_streambuf>_CharT, _Traits>&) [with_CharT = char; _Traits = std::char_traits<char>]' is private C:\Program Files (x86)\CodeBlocks\MinGW\lib\gcc\mingw32\4.9.2\include\c++\bits\ios_base.h|789|error: 'std::ios_base& std::ios_base::operator=(const std::ios_base&)' is private| C:\Program Files (x86)\CodeBlocks\MinGW\lib\gcc\mingw32\4.9.2\include\c++\bits\basic_ios.h|66|error: within this context| C:\Program Files (x86)\CodeBlocks\MinGW\lib\gcc\mingw32\4.9.2\include\c++\streambuf|810|error: 'std::basic_streambuf<_CharT, _Traits>& std::basic_streambuf<_CharT, _Traits>::operator=(const std::basic_streambuf<_CharT, _Traits>&) [with _CharT = char; _Traits = std::char_traits<char>]' is private| C:\Program Files (x86)\CodeBlocks\MinGW\lib\gcc\mingw32\4.9.2\include\c++\fstream|72|error: within this context|
#include <iostream>
#include <stdlib.h>
#include <fstream>
using namespace std;
struct artikl()
{
int sif;
int kolic;
char naz[20];
float cena;
};
void unos()
{
fstream myfile;
myfile = fstream("file.bin", ios::out | ios::binary);
artikl art_val;
cout << "Unesite sifru: ";
cin>>art_val.sif;
cout << "Unesite kolicinu: ";
cin>>art_val.kolic;
cout << "Unesite naziv: ";
cin>>art_val.naz;
cout << "Unesite cijenu: ";
cin>>art_val.cena;
myfile.write((char *) &art_val, sizeof(artikl));
myfile.close();
}
void ispis()
{
fstream myfile;
myfile = fstream("file.bin", ios::in | ios::binary );
artikl art_val;
myfile.read((char *) &art_val, sizeof(artikl));
cout << "Naziv: " << art_val.naz << "\n" << "Sifra: " << art_val.sif << "\n" << "Cijena: " << art_val.cena << "\n" << "Kolicina: "<< art_val.kolic << "\n";
}
int main()
{
cout << "Izbornik: \n" << endl;
while (true)
{
cout<< "1. Unos podataka: \n";
cout<< "2. Ispis: \n";
cout<< "9. Izlaz iz programa \n";
int a;
cin>>a;
if (a == 1)
{
cout<<"Unesi podatke koje treba upisati u datoteku.\n";
unos();
}
else if (a == 2)
{
cout<<"Podaci iz datoteke su: \n";
ispis();
}
else if (a == 9)
{
exit(1);
}
else
cout<<"Niste unijeli 1, 2 ili 9.";
}
return 0;
}
解决方案
您正在创建一个默认构造fstream
对象,然后立即尝试为其分配另一个新fstream
对象,这是不允许的。
您应该将这两个语句组合成
fstream myfile("file.bin", ios::out | ios::binary);
推荐阅读
- python - 带有python程序图和固定参数的积分变换和复数级数以及修正的贝塞尔函数
- macos - VisualVM 不会连接到远程,挂在 Preferences > Network
- android - 两个未解决的资源
- html-to-pdf - 从 HTML Selectpdf 生成 PDF 时生成的内容小于预期
- php - 使用 imagick 找出透明图像是否具有纯白色 (#ffffff) 前景
- php - 在 Laravel 8 中从 boot[traitName] 访问模型值
- django - 如何在Django中与对象属性的多对多关系强制唯一性?
- python - Zscaler api 使用 Python 进行身份验证
- c++ - 是否可以将大于 255 的 int 值分配给 char?
- questdb - 您如何从 QuestDB 获取普罗米修斯指标