VC中二维字符串数组使用总结()
2013-04-05 09:56
1121 查看
想要这样的一个数据,如果是静态的,可以用C语言来定义:
注意:上面的声明是初始化了4行,每行3列,每个空间为不超过100个的字符(含‘\0’);
如果是动态的数据,如何声明并使用,下面使用MFC中的CArray<CStringArray, CStringArray &>编译失败:
在网上查到,据说CArray<CStringArray *, CStringArray *>是成功的,但考虑到引进来指针,对CString、CStringArray的内存分配、构造函数、析构函数不熟,没在这上面多花心思;
换成声明vector<CStringArray> array;仍旧编译失败:
最后还是全部使用STL,vector<vector<string> >,成功:
使用STL唯一的不便是和CString单字节、双字节UNICODE及多字节之间的转换,好在VC中为每个字符串操作函数提供了字符集映射。
char array[][3][100] = { {"ABC01", "ABC02", "ABC03"}, {"ABC11", "ABC12", "ABC13"}, {"ABC21", "ABC22", "ABC23"}, {"ABC31", "ABC32", "ABC33"}, };
注意:上面的声明是初始化了4行,每行3列,每个空间为不超过100个的字符(含‘\0’);
如果是动态的数据,如何声明并使用,下面使用MFC中的CArray<CStringArray, CStringArray &>编译失败:
CStringArray ssRows;//每一行字符串数组 CArray<CStringArray, CStringArray &> array;//之后去掉了&,仍旧编译失败 // // 创建一个二维的字符串表格 // int i, j; array.RemoveAll(); for (i=0; i<100; i++) { ssRows.RemoveAll(); for (j=0; j<5; j++) { CString str; str.Format("ABC%d%d", i, j); ssRows.Add(str); } array.Add(ssRows); } // // 访问这个字符串表格 // for (i=0; i<array.GetSize(); i++) { ssRows = array.GetAt(i); for (j=0; j<ssRows.GetSize(); j++) { CString str = ssRows[j]; TRACE("%s\t", str); } TRACE("\n"); }编译失败的原因不明白!
在网上查到,据说CArray<CStringArray *, CStringArray *>是成功的,但考虑到引进来指针,对CString、CStringArray的内存分配、构造函数、析构函数不熟,没在这上面多花心思;
换成声明vector<CStringArray> array;仍旧编译失败:
CStringArray ssRows; vector<CStringArray> array; int i, j; //创建二维字符串表格 for (i=0; i<100; i++) { ssRows.RemoveAll(); for (j=0; j<5; j++) { CString str; str.Format("ABC%d%d", i, j); ssRows.Add(str); } array.push_back(ssRows); } //访问二维字符串表格 for (i=0; i<array.size(); i++) { ssRows = array[i]; for (j=0; j<ssRows.GetSize(); j++) { CString str = ssRows[j]; TRACE("%s\t", str); } TRACE("\n"); }
最后还是全部使用STL,vector<vector<string> >,成功:
vector<string> ssRows; vector<vector<string> > array; //小心两个>>不要连在一起!! int i, j; //创建二维字符串表格 for (i=0; i<100; i++) { ssRows.clear(); for (j=0; j<5; j++) { char buf[100] = {0}; sprintf(buf, "ABC%d%d", i, j); string str(buf); ssRows.push_back(str); } array.push_back(ssRows); } //访问二维字符串表格 for (i=0; i<array.size(); i++) { ssRows = array[i]; for (j=0; j<ssRows.size(); j++) { string str = ssRows[j]; TRACE("%s\t", str.c_str()); } TRACE("\n"); }
使用STL唯一的不便是和CString单字节、双字节UNICODE及多字节之间的转换,好在VC中为每个字符串操作函数提供了字符集映射。
相关文章推荐
- 【总结】关于在Android中如何使用字符串数组String[]
- PHP数组字符串使用总结大全
- VC如何生成字符串数组给javascript使用
- 二维字符数组与字符串数组的使用
- javaScript-----数组使用字符串作为下标
- 关于C使用指针获取二维字符数组信息
- [C] 跨平台使用Intrinsic函数范例1——使用SSE、AVX指令集 处理 单精度浮点数组求和(支持vc、gcc,兼容Windows、Linux、Mac)
- 二维及多维数组,字符串(Day-4)
- VC中字符串取子串总结(转)
- Sql常见问题总结二(Sql语句怎么样查询IP,游标去重复,各种函数使用,各种取时间格式,字符串精确排序,超时锁问题)
- 字符串使用总结
- 【C++】C++的输入输出、循环、条件、字符串、数组、类、继承的使用实例
- javaScript-----数组使用字符串作为下标
- Android资源文件 - 使用资源存储字符串 颜色 尺寸 整型 布尔值 数组
- C和指针之二维字符串数组用指针数组、数组指针、二级指针打印
- php使用js保存的json cookie 字符串,然后解析成数组,需要注意的事项
- JavaScript使用数组拼接字符串性能如何?
- VC的使用总结
- 使用JSONKit将字符串,字典,数组…
- 一维数组当成二维使用