CString 长度取出来不对

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CString 长度取出来不对相关的知识,希望对你有一定的参考价值。

近来写程序遇到一个问题
CString str="2424001113612345678fff500005d80d0a"
...
str.GetLength()得到的长度是22.为什么fff后面的都不算了?用char *p=(char *)(LPCTSTR)str;
strlen(p)得出来的也是22很是郁闷啊,有没有高人知道这是为什么的?

昏, 其实这个22是指16进制的,10进制为34,你再看看。 参考技术A 我运行没问题啊,是34

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 长度取出来不对的主要内容,如果未能解决你的问题,请参考以下文章

CString 取字符串

cstring 限制字符长度

请教获取CString长度错误

怎样算CString 对象中字符串的长度

在vs2010 MFC 项目中使用int i=5;CString str;str.Format("%d",i);编译时报错,提示str.Format参数不对

string和string.h和cstring之间的关联