本文目录一览:
- 1、有没有简单的序列化std:string的办法
- 2、C语言中如何序列化一个字符串
- 3、c#中什么叫序列化操作?
- 4、c语言可以读取文件内容 自动创建变量吗?
- 5、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的中的字节是怎么对齐的,建议而已