您的位置:

序列化c语言,C++序列化

本文目录一览:

有没有简单的序列化std:string的办法

string作为类型使用是 c++中的,c语言中没有。

对于c++,string类型在头文件:#include using namespace std;中

其中c++中string类封装了很多关于字符串的操作,包括重载运算符,即能直接以==,!=比较字符串,还有取子符等操作。

想了解更多的话,博客园中这篇不错:

而且你也可以在百度首页直接输入 c++ string查找资料。

C语言中如何序列化一个字符串

var a=new {ID=1,Name="name",OtherInfo="other"};

string strJson=new JavaScriptSerializer().Serialize(a);

需要添加System.Web.Extensions.dll库文件引用

需要引用System.Web.Script.Serialization命名空间

c#中什么叫序列化操作?

在C#中序列化操作简单点来理解就是把内存的东西写到硬盘中,当然也可以写到内存中,而反序列化就是从硬盘中把信息读到内存中。 下面以 BinaryFormatter序列化类Book作为例子说明下什么是序列化。定义类Book: [Serializable]

public class Book

{

string name;

float price;

string author; public Book(string bookname, float bookprice, string bookauthor)

{

name = bookname;

price = bookprice;

author = bookauthor;

}

} 在类的上面增加了属性:Serializable.(如果不加这个属性,将抛出SerializationException异常). 通过这个属性将Book标志为可以序列化的.当然也有另一种方式使类Book可以序列化,那就是实行ISerializable接口了.在这里要注意了:Serializable属性是不能被继承的咯!!! 如果你不想序列化某个变量,该怎么处理呢?很简单,在其前面加上属性[NonSerialized] .比如我不想序列化 string author; 那我只需要 [NonSerialized] string author; 好了,现在请看怎么实现序列化: 我们使用namespace: using System; using System.IO; using System.Runtime.Serialization.Formatters.Binary; 首先创建Book实例,like this: Book book = new Book("Day and Night", 30.0f, "Bruce"); 接着当然要创建一个文件了,这个文件就是用来存放我们要序列化的信息了. FileStream fs = new FileStream(@"C:\book.dat", FileMode.Create); 序列化的实现也很简单,like this: BinaryFormatter formatter = new BinaryFormatter();

formatter.Serialize(fs, book); 很简单吧!现在我列出整个原代码,包括反序列化. static void Main(string[] args)

{

Book book = new Book("Day and Night", 30.0f, "Bruce"); using(FileStream fs = new FileStream(@"C:\book.dat", FileMode.Create))

{

BinaryFormatter formatter = new BinaryFormatter();

formatter.Serialize(fs, book);

} book = null; using(FileStream fs = new FileStream(@"C:\book.dat", FileMode.Open))

{

BinaryFormatter formatter = new BinaryFormatter();

book = (Book)formatter.Deserialize(fs);//在这里要注意咯,他的返回值是object

}

}

c语言可以读取文件内容 自动创建变量吗?

答案肯定是可以的,一个简单的实现方法如下。

第一步定义一个结构体,成员如下:

struct Data

{

char type; //假设i-int, d-double, c-char建议用缩写便于后面判断

void *ptr;

struct Data *next;

}

第二步建立结构体链表,打开文件读取文件内容,如果文件不规律可以读取每行,自己这个扫描函数;像数据库它是规律的,数据类型后面跟着值,首先读取数据类型,然后根据数据类型用malloc申请适当内存存放数据,申请回来的内存赋值给ptr,文件值写入ptr指向的内存。按这种方式读取完全部。返回链表头head。

第三步使用值,首先使用switch case判断type类型,假设类型为i整形,那值为*((int)(ptr))。其它的类似就可以了。

C语言文件输出时,输入数据后为什么会出现乱码

if(fwrite(stud[i],sizeof(struct

studentType),1,fp)!=1)

简单看了下,这行有问题,往文件里写的时候是把一个字符串写进去,stud[i]是一个struct,强行把它序列化的话,内存中的存储不是连续的,这样写就会写入一些没用的数据,导致出错。考虑一下怎么把struct序列化,再看看struct的中的字节是怎么对齐的,建议而已