文件保存错误 [错误] 无法通过'...'传递不可平凡复制类型的对象'std::string {aka class std::basic_string<char>}'

  • 本文关键字:string std 错误 aka 对象 class char basic 复制 c++
  • 更新时间 :
  • 英文 :


我对编码界还很陌生,所以我似乎无法理解这个错误。我正在创建一个产品管理程序,在该程序中,您可以输入产品详细信息并将数据放在文件中,然后通过cmd从文件中查看,但每当我使用fprintffputs时,就会不断出现此错误。

我的代码:

#include<iostream>
#include<stdio.h>
#include<string.h>
using namespace std;
struct product{
string Id,Name,Brand;
int type, price, quan;
product *next;
};
int main(){
product *a,*b,*c,*d,*e,*f;
a = new product;
b = new product;
c = new product;
d = new product;
e = new product;
f = new product;
FILE *productRecord;
productRecord = fopen("Product Record","r");
int choice;
cout << "nProduct Recordn1)Add Productn2)Update Product Detailsn3)Delete Productn4)View Product By Brand or Typen5)ExitnnEnter Choice: ";
cin >> choice;
if(choice == 1){
char tempId[11],tempName[60],tempBrand[60];
int temp_type, temp_price, temp_quan;
productRecord = fopen("Product Record","a");
cout << "Enter Product ID No.(Maximum of 10 Digits): ";
cin >> tempId;
a -> Id = tempId;
a -> next = b;
cout << "Enter Product Name(No Special Character): ";
cin >> tempName;
b -> Name = tempName;
b -> next = c;
cout << "Types:Canned(1),Frozen(2),Drinks(3),Produce(4),Meat/Seafood(5),Cleaning(6)nEnter Product Type(1-6): ";
cin >> temp_type;
c -> type = temp_type;
c -> next = d;
cout << "Enter Product Brand(No spaces): ";
cin >> tempBrand;
d -> Brand = tempBrand;
d -> next = e;
cout << "Enter Product Price: ";
cin >> temp_price;
e -> price = temp_price;
e -> next = f;
cout << "Enter Product Quantity: ";     
cin >> temp_quan;
f -> quan = temp_quan;
f -> next = NULL;
fprintf(productRecord, "%s", a -> Id); //this is the error


fclose(productRecord);
}
else if(choice == 2){
}
else if(choice == 3){
}
else if(choice == 4){
}
else if(choice == 5){
}
return 0;
}

错误消息非常清楚。不能将stringfprintf一起使用。

fprintf(productRecord, "%s", a -> Id);

需要更改为

fprintf(productRecord, "%s", a->Id.c_str());

或者,更好的是,不要混合使用C和C++,而是使用ofstream

最新更新