本文目錄一覽:
- 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的中的字節是怎麼對齊的,建議而已
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/238312.html