在询问C++问题,字符串拼接的问题,我一学java的,现在天天在c++论坛混,悲剧啊。

lxpandsq 2013-03-22 11:36:21
先上代码如下:

bool C;
C=false;
string str[8];
while(C)
{
C =p->GetAllGLogData(18,<MachineNO,&lEnrollNO,&lEMachineNO,&lVerifyMode,&lYear,&lMonth,&lDay,&lHour,&lMin);
str[0]=lTMachineNO;
str[1]=lEnrollNO;
str[2]=lEMachineNO;
str[3]=lVerifyMode;
str[4]=lYear;
str[5]=lMonth;
str[6]=lDay;
str[7]=lHour;
str[8]=lMin;
RecCount++;
}

过程就是调用一个方法叫做GetAllGLogData,这个方法会返回9个值,都是long类型的。
而且是调用一次就返回9个,用前面那个C做判读标识,当C不为false的时候,就一直调用,这样就形成了一个二维数组,现在头大的是,这个行数不是固定的,也没有办法预判,因为没有获取行数的办法。除非在while一次,那这个效率···········
我根据java的方法已经想了很多办法还是没辙。
方法一,将9个数字拼接成字符串,比如:a1,a2,a3····a9,大不了在根据逗号拆分。结果,我拼接不起来···
方法二,我打算用ArrayList<long> arr =new ArrayList<long>();先将那个9个add进去;然后在用ArrayList<object> arr1=new ArrayList<object>();将前面那个arr在用add到arr1里面,结果还是没有搞定。
方法三,用指针,拼接内存地址,这个就更不用说了。
求各位大哥,这事该怎么处理啊,我需要将最后这个二维数组传出去,让别的方法调用啊
...全文
358 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
liumaono1 2013-03-22
  • 打赏
  • 举报
回复
CString::Format()
armsword 2013-03-22
  • 打赏
  • 举报
回复
google下strcat函数的源代码。
乔巴好萌 2013-03-22
  • 打赏
  • 举报
回复
string str[8]里面每个元素类型都是string 而你返回的那9个值类型是long ,类型不匹配,编译能成功? 而且string str[8]只返回了一个数组,里面是8个元素,访问时下标是0~7 改成这样把 bool C; C=false; vector< vector<long> > retval ;//注意,右面的>>不能连在一起,否则编译错 while(C) { C =p->GetAllGLogData(18,<MachineNO,&lEnrollNO,&lEMachineNO,&lVerifyMode,&lYear,&lMonth,&lDay,&lHour,&lMin); if ( ! C ) //C都为false了你这里要返回,而不是继续处理数据 { break; } vector<long> tmp; tmp.push_back(lTMachineNO); tmp.push_back(lMin); retval.push_back(tmp); }
enic 2013-03-22
  • 打赏
  • 举报
回复
直接上string 哪有那么复杂
starytx 2013-03-22
  • 打赏
  • 举报
回复
说实话看了半天没太明白你的疑惑在哪里?你是说那个函数运行的次数不确定,你不知道如何保存他返回的值?可以弄一个结构体,里边9个long,然后定义一个vetor<结构体>,然后在循环里将函数返回的值分别填充到结构体,再push_back到vector里就可以了
  • 打赏
  • 举报
回复
strcat 就可以拼接字符串了,前提是申请足够长的内存。
lxpandsq 2013-03-22
  • 打赏
  • 举报
回复
引用 18 楼 starytx 的回复:
#include <string> #include <vector> vector<string> MyData; while(...) { ... } 引用 17 楼 lxpandsq 的回复: 引用 15 楼 starytx 的回复: char str[260] = {0}; sprintf(str ,"%ld%ld%ld%ld%ld%ld%ld%ld%……
服务也太到家了,本来是请你给个提示,因为,我只知道,c++中有个list,您连完整的代码都给出来了。 分太少了,不好意思分了,全给您啦。其他兄弟,抱歉了,等我存够分在来。
enic 2013-03-22
  • 打赏
  • 举报
回复
可以考虑下用stringstream,,,
starytx 2013-03-22
  • 打赏
  • 举报
回复
#include <string> #include <vector> vector<string> MyData; while(...) { ... }
引用 17 楼 lxpandsq 的回复:
引用 15 楼 starytx 的回复: char str[260] = {0}; sprintf(str ,"%ld%ld%ld%ld%ld%ld%ld%ld%ld" ,lTMachineNO,lEnrollNO,lEMachineNO......); 大哥,果然还是你的方法高明啊。 我现在用cout<<str<<endl;效果和原来那么多个cout的效果一样。 我在请教下,现在这个,……
#include <string>
#include <vector>
void fun(vector<string> & MyData)
{
    while(...)
    {
        ...
        char str[260] = {0};
        sprintf(str ,"%ld%ld%ld%ld%ld%ld%ld%ld%ld" ,lTMachineNO,lEnrollNO,lEMachineNO......);
        MyData.push_back(string(str));
        ...
    }
}

int main()
{
    vector<string> MyData;    // 这个容器里包含着你要的结果
    fun(MyData);
    return 0;
}
lxpandsq 2013-03-22
  • 打赏
  • 举报
回复
引用 15 楼 starytx 的回复:
char str[260] = {0}; sprintf(str ,"%ld%ld%ld%ld%ld%ld%ld%ld%ld" ,lTMachineNO,lEnrollNO,lEMachineNO......);
大哥,果然还是你的方法高明啊。 我现在用cout<<str<<endl;效果和原来那么多个cout的效果一样。 我在请教下,现在这个,只处理了,while的一次循环,9个参数拼接,然后下一步,需要处理循环,我考虑使用 list然后add然后用指针传递给别的方法,不知道该怎么操作啦。 还有,C++的各位大哥真热情,要不是我没分了,一定加分
lxpandsq 2013-03-22
  • 打赏
  • 举报
回复
引用 10 楼 zhenghongzhi6 的回复:
引用 8 楼 lxpandsq 的回复: 引用 2 楼 starytx 的回复:说实话看了半天没太明白你的疑惑在哪里?你是说那个函数运行的次数不确定,你不知道如何保存他返回的值?可以弄一个结构体,里边9个long,然后定义一个vetor<结构体>,然后在循环里将函数返回的值分别填充到结构体,再push_back到vector里就可以了 我刚看了半天c++,了解到可以用list,结果发现,l……
果然通过了,虽然很复杂但解决了,我在测试下,明天结贴
starytx 2013-03-22
  • 打赏
  • 举报
回复
char str[260] = {0}; sprintf(str ,"%ld%ld%ld%ld%ld%ld%ld%ld%ld" ,lTMachineNO,lEnrollNO,lEMachineNO......);
lxpandsq 2013-03-22
  • 打赏
  • 举报
回复
引用 5 楼 armsword 的回复:
google下strcat函数的源代码。
我是学java程序的很难看懂->、>>、::这些东西,能给个简单的例子吗
lxpandsq 2013-03-22
  • 打赏
  • 举报
回复
引用 6 楼 liumaono1 的回复:
CString::Format()
哥,可否详细点,这两个冒号的意思,太多,我不怎么懂,可否给个实例
lxpandsq 2013-03-22
  • 打赏
  • 举报
回复
引用 3 楼 cl_gamer 的回复:
直接上string 哪有那么复杂
string s=lEnrollNO+lEMachineNO;这两个变量相加是错的
woshiheikelu 2013-03-22
  • 打赏
  • 举报
回复
http://pan.baidu.com/share/link?shareid=463310&uk=2536828773
大智_Unity玩家 2013-03-22
  • 打赏
  • 举报
回复
引用 8 楼 lxpandsq 的回复:
引用 2 楼 starytx 的回复:说实话看了半天没太明白你的疑惑在哪里?你是说那个函数运行的次数不确定,你不知道如何保存他返回的值?可以弄一个结构体,里边9个long,然后定义一个vetor<结构体>,然后在循环里将函数返回的值分别填充到结构体,再push_back到vector里就可以了 我刚看了半天c++,了解到可以用list,结果发现,list<list<……
list<list<long> > 右边的>>不能连在一起,中间加个空格,否则编译不过
lxpandsq 2013-03-22
  • 打赏
  • 举报
回复
引用 4 楼 openXMPP 的回复:
string str[8]里面每个元素类型都是string 而你返回的那9个值类型是long ,类型不匹配,编译能成功? 而且string str[8]只返回了一个数组,里面是8个元素,访问时下标是0~7 改成这样把 bool C; C=false; vector< vector<long> > retval ;//注意,右面的>>不能连在一起,否则编译错 while(C) ……
就是啊,上面应该是9啊怎么变成8了。你这个代码只解决了,while的一次循环,我原来打算将这9个变量拼接成字符串,然后在用list的,结果,我根本就拼接不起·····
lxpandsq 2013-03-22
  • 打赏
  • 举报
回复
引用 2 楼 starytx 的回复:
说实话看了半天没太明白你的疑惑在哪里?你是说那个函数运行的次数不确定,你不知道如何保存他返回的值?可以弄一个结构体,里边9个long,然后定义一个vetor<结构体>,然后在循环里将函数返回的值分别填充到结构体,再push_back到vector里就可以了
我刚看了半天c++,了解到可以用list,结果发现,list<list<long>>是错的。 结构不是要命名吗,循环命名?java中字符串操作,直接,String s="a"+"b";就可以了。
lxpandsq 2013-03-22
  • 打赏
  • 举报
回复
引用 1 楼 akirya 的回复:
strcat 就可以拼接字符串了,前提是申请足够长的内存。
长度不定啊,那内存怎么够啦?

64,649

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧