//========================================================================
//TITLE:
// vcf文件分解
//AUTHOR:
// norains
//DATE:
// Saturday 4-October-2008
//Environment:
// NONE
//========================================================================
不知为何,索爱K750再也起不来了,只好去买款NOKIA 5320。所幸的是,之前索爱K750有一部分联系人是存在PC的的玩转手机这款软件中,只是没想到玩转手机是将所有的联系人全部导出到一个文件,而我的5320对同一个文件只能识别一个联系人。无奈,顺手写了个程序,将同一个文件中的联系人提取出来,分别保存为同名文件。
因为只是简单的提取,方便自己,所以路径是固定的。如果各位朋友打算使用该代码,可以将路径改为相对应的文件。当然,最好是做一个弹出对话框,选择文件了,呵呵~
代码如下;
// VCardConvert.cpp : Defines the entry point for the application.
//
#include "stdafx.h"
#include "string"
#include "vector"
#include "map"
#define STR_BEGIN_FLAG"BEGIN:VCARD"
#define STR_END_FLAG"END:VCARD"
#define STR_NAME_FLAG";"
#define STR_FILE_READ"H://电话簿.vcf"
#define STR_SAVE_FOLDER"h://电话本//"
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
// TODO: Place code here.
HANDLE hFileRead = CreateFile(STR_FILE_READ,GENERIC_READ,NULL,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
if(hFileRead == INVALID_HANDLE_VALUE)
{
return 0x01;
}
//The read buffer
std::vector<char> vtBuf(GetFileSize(hFileRead,NULL),0);
//Read the file
DWORD dwRead = 0;
ReadFile(hFileRead,&vtBuf[0],vtBuf.size(),&dwRead,NULL);
if(dwRead == 0)
{
return 0x02;
}
//The buffer for finding
std::string strBuf(vtBuf.begin(),vtBuf.end());
std::map<std::string,std::string> mpWrite;
//std::vector<std::string> vtStore;
//Store the content
std::string::size_type posBegin = strBuf.find(STR_BEGIN_FLAG,0);
std::string::size_type posEnd = 0;
while(posBegin != std::string::npos)
{
posEnd = strBuf.find(STR_END_FLAG,posBegin);
if(posEnd == std::string::npos)
{
break;
}
std::string::size_type posNameBegin = strBuf.find(STR_NAME_FLAG,posBegin);
std::string::size_type posNameEnd = strBuf.find(STR_NAME_FLAG,posNameBegin + 1);
if(posNameBegin != std::string::npos && posNameEnd != std::string::npos)
{
mpWrite.insert(std::make_pair(std::string(strBuf.begin() + posNameBegin + 1, strBuf.begin() + posNameEnd),
std::string(strBuf.begin() + posBegin, strBuf.begin() + posEnd + strlen(STR_END_FLAG))));
}
posBegin = strBuf.find(STR_BEGIN_FLAG,posEnd);
//vtStore.push_back(std::string(strBuf.begin() + posBegin, strBuf.begin() + posEnd + strlen(STR_END_FLAG)));
}
CloseHandle(hFileRead);
//Write the text
for(std::map<std::string,std::string>::iterator iter = mpWrite.begin(); iter != mpWrite.end(); iter ++)
{
std::string strFile = STR_SAVE_FOLDER;
strFile += iter->first;
strFile += ".vcf";
HANDLE hFileWrite = CreateFile(strFile.c_str(),GENERIC_WRITE,NULL,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
if(hFileWrite == INVALID_HANDLE_VALUE)
{
return 0x01;
}
DWORD dwWrite = 0;
WriteFile(hFileWrite,iter->second.c_str(),iter->second.size(),&dwWrite,NULL);
CloseHandle(hFileWrite);
}
return 0;
}
分享到:
相关推荐
vcf文件生成器将EXCEL文件的通讯录转换成vcf文件,可以直接在android系统的手机通讯录导入。支持工作单位、职位、单位地址、网址、传真、家庭地址、qq号码的导入。 vcf文件生成器 v4.6更新日志: 1、增加了多选...
老虎通讯录是一款免费的VCF文件编辑器。VCF是保存个人通讯信息的的文件格式,广泛用于邮件、手机等系统。但是不同的实现又有小差别,造成了一定的兼容性问题。老虎编辑器可以读入或导入安卓、苹果、诺基亚S60等系统...
可以根据excel表生成vcf文件,便于批量导入电话
Vcard(vcf)文件生成器是一款专业的vcf文件生成工具软件。现在安卓系统的手机通迅录一般是支持Vcf文件格式,而软件最大的特色是可以实现直接在android系统的的手机通讯录导入EXCEL文件,并将其直接转化为vcf文件。...
这是我发布的一个免费软件,可以将EXCEL转换成VCF文件,手机通讯录可以将VCF文件直接导入。
老虎编辑器可以读入或导入安卓、苹果、诺基亚S60等系统输出的VCF文件,并能针对不同的用途保存或导出到单个或者多个VCF文件。解决常见的不同系统间的乱码、导入失败问题。 系统默认读写安卓、苹果系统的VCF文件。 ...
老虎编辑器可以读入或导入安卓、苹果、诺基亚S60等系统输出的VCF文件,并能针对不同的用途保存或导出到单个或者多个VCF文件。解决常见的不同系统间的乱码、导入失败问题。 系统默认读写安卓、苹果系统的VCF文件。 ...
python读取excel中手机号,然后批量转换为vcf文件,vcf文件可一键导入到手机里面。此功能使用了pandas模块读取excel,tkinter模块来制作GUI界面。
vcf文件生成器将EXCEL文件的通讯录转换成vcf文件,可以直接在android系统的手机通讯录导入。支持工作单位、职位、单位地址、网址、传真、家庭地址、qq号码的导入。需要的朋友们可以下载试试吧! Vcard(vcf)文件生成...
就是简单的vcf 文件的合并, 去掉重复 . 学习笔记..
从excel中批量导入生成VCF文件,解决通讯录问题,我测试过可以用
多个VCF文件合并成一个VCF文件的处理方法,此方法必定可以解决您的烦恼
将基因型文件转换为vcf文件,可以直接运行,压缩文件中有例子
vcf文件生成器将EXCEL文件的通讯录转换成vcf文件,可以直接在android系统的手机通讯录导入。
一个PHP写的类,用来生成VCF文件,该生成的文件可以直接导入手机通讯录,非常好用。
vcf编辑器 vcf编辑器vcf编辑器vcf编辑器vcf编辑器
vcf文件生成器通讯录vcf转excel工具,excel转vCard
将 vcf文件转成表格
iphone常用号码黄页,vcf文件可直接导入,包括了各大银行,快递,大平台的服务号码,并带图片,解决了iPhone没有本地化通讯录的难题
vcf是手机通讯录的文件格式,使用excel或者txt能够快速编辑通讯录,vcf文件生成器将其转换为vcf文件就能够将通讯录内容导入手机。