CString 长度取出来不对
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CString 长度取出来不对相关的知识,希望对你有一定的参考价值。
近来写程序遇到一个问题
CString str="2424001113612345678fff500005d80d0a"
...
str.GetLength()得到的长度是22.为什么fff后面的都不算了?用char *p=(char *)(LPCTSTR)str;
strlen(p)得出来的也是22很是郁闷啊,有没有高人知道这是为什么的?
CString str="2424001113612345678fff500005d80d0a";
int l=str.GetLength();
CString temp;
temp.Format("%d",l);
GetDlgItem(IDC_EDIT1)->SetWindowText(temp);
然后文本框里显示是34 参考技术B 我运行的结果是34啊!使用VC6的CL命令编译:
#include<iostream.h>
#include<afx.h>
void main()
CString str="2424001113612345678fff500005d80d0a";
cout<<str.GetLength()<<endl;
char *p=(char *)(LPCTSTR)str;
cout<<strlen(p)<<endl;
p=(LPSTR)(LPCTSTR)str;
cout<<strlen(p)<<endl;
你再说详细一点! 参考技术C 你肯定在调用GetLength之前改过了str的内容了,我在VS2005上没有什么操作是34 参考技术D 没问题
输入n个数组,数组长度不等,每个数组取出一个数进行组合,求出所有的组合。
转载声明:原文转自http://www.cnblogs.com/xiezie/p/5511707.html
昨天晚上,有个朋友找到我,他在用matlab编程,但是遇到一个问题,解决不了。
问题如下:
输入n个数组,数组长度不等,从每个数组取出一个数进行组合,求出所有的组合。
例子:
int a[]={1,2};
int b[]={3,4,5};
可能的组合:{1,3};{1,4};{1,5};{2,3};{2,4};{2,5};
搞了40分钟左右,不辱使命~
JAVA代码实现:
import java.io.BufferedInputStream; import java.util.ArrayList; import java.util.Scanner; public class Test { public static void main(String[] args) { Scanner scanner = new Scanner(new BufferedInputStream(System.in));
//这里使用ArrayList<ArrayList<Integer>>是为了方便int数组的操作 ArrayList<ArrayList<Integer>> lists = new ArrayList<>();//若已知所以组合的具体个数可以定义容量长度--》提高性能 System.out.println("输入要所有数组的总个数:"); int n = scanner.nextInt();//数组的个数 int[] allLen = new int[n];//所有数组的长度 int index = 0; int ll = n ; while(ll--!=0){ System.out.println("输入第" + (index + 1) + "个数组的长度:"); int m = scanner.nextInt();//输入一个数组的长度 allLen[index++] = m; ArrayList<Integer> arrayList = new ArrayList<>(m); System.out.println("输入第" + index + "个数组的数据:" + "个数为\\t" + m); for(int i = 0 ; i != m ; i ++ ){ arrayList.add(scanner.nextInt()); } lists.add(arrayList); } int[] allLenProduct = new int[n];//数组的长度乘积增量 int p = 1; //组合的个数 int l = n; int index1 = 0; ArrayList<ArrayList<Integer>> results = new ArrayList<>(p); while(--l!=-1){ allLenProduct[index1] = p; p=allLen[index1++]*p; } for(int i = 0 ; i != p ; i ++ ){ ArrayList<Integer> arrayList = new ArrayList<>(n); for(int j = 0 ; j != n ; j ++){ arrayList.add(lists.get(j).get(i/allLenProduct[j]%allLen[j])); } results.add(arrayList); } int len = results.size(); System.out.println("所有的组合:"); for(int i = 0 ; i != len ; i ++ ){ ArrayList<Integer> arrayList = results.get(i); int aLen = arrayList.size(); System.out.print("\\t第\\t" + (i + 1) + "\\t行:\\t"); for(int j = 0 ; j != aLen ; j ++){ System.out.print(arrayList.get(j) + " "); } System.out.println(); } scanner.close(); } }
测试:
输入:
输入要所有数组的总个数:
4
输入第1个数组的长度:
2
输入第1个数组的数据:个数为 2
1 2
输入第2个数组的长度:
3
输入第2个数组的数据:个数为 3
4 5 6
输入第3个数组的长度:
3
输入第3个数组的数据:个数为 3
7 8 9
输入第4个数组的长度:
4
输入第4个数组的数据:个数为 4
10 11 12 13
结果:
所有的组合:
第 1 行: 1 4 7 10
第 2 行: 2 4 7 10
第 3 行: 1 5 7 10
第 4 行: 2 5 7 10
第 5 行: 1 6 7 10
第 6 行: 2 6 7 10
第 7 行: 1 4 8 10
第 8 行: 2 4 8 10
第 9 行: 1 5 8 10
第 10 行: 2 5 8 10
第 11 行: 1 6 8 10
第 12 行: 2 6 8 10
第 13 行: 1 4 9 10
第 14 行: 2 4 9 10
第 15 行: 1 5 9 10
第 16 行: 2 5 9 10
第 17 行: 1 6 9 10
第 18 行: 2 6 9 10
第 19 行: 1 4 7 11
第 20 行: 2 4 7 11
第 21 行: 1 5 7 11
第 22 行: 2 5 7 11
第 23 行: 1 6 7 11
第 24 行: 2 6 7 11
第 25 行: 1 4 8 11
第 26 行: 2 4 8 11
第 27 行: 1 5 8 11
第 28 行: 2 5 8 11
第 29 行: 1 6 8 11
第 30 行: 2 6 8 11
第 31 行: 1 4 9 11
第 32 行: 2 4 9 11
第 33 行: 1 5 9 11
第 34 行: 2 5 9 11
第 35 行: 1 6 9 11
第 36 行: 2 6 9 11
第 37 行: 1 4 7 12
第 38 行: 2 4 7 12
第 39 行: 1 5 7 12
第 40 行: 2 5 7 12
第 41 行: 1 6 7 12
第 42 行: 2 6 7 12
第 43 行: 1 4 8 12
第 44 行: 2 4 8 12
第 45 行: 1 5 8 12
第 46 行: 2 5 8 12
第 47 行: 1 6 8 12
第 48 行: 2 6 8 12
第 49 行: 1 4 9 12
第 50 行: 2 4 9 12
第 51 行: 1 5 9 12
第 52 行: 2 5 9 12
第 53 行: 1 6 9 12
第 54 行: 2 6 9 12
第 55 行: 1 4 7 13
第 56 行: 2 4 7 13
第 57 行: 1 5 7 13
第 58 行: 2 5 7 13
第 59 行: 1 6 7 13
第 60 行: 2 6 7 13
第 61 行: 1 4 8 13
第 62 行: 2 4 8 13
第 63 行: 1 5 8 13
第 64 行: 2 5 8 13
第 65 行: 1 6 8 13
第 66 行: 2 6 8 13
第 67 行: 1 4 9 13
第 68 行: 2 4 9 13
第 69 行: 1 5 9 13
第 70 行: 2 5 9 13
第 71 行: 1 6 9 13
第 72 行: 2 6 9 13
以上是关于CString 长度取出来不对的主要内容,如果未能解决你的问题,请参考以下文章
在vs2010 MFC 项目中使用int i=5;CString str;str.Format("%d",i);编译时报错,提示str.Format参数不对