首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

连接连个字符串后,输出有乱码

2013-04-20 
连接连个字符串后,输出有乱码,求助/* 编一程序,将两个字符串连接起来,不要用strcat函数。 */ #include ios

连接连个字符串后,输出有乱码,求助
/* 编一程序,将两个字符串连接起来,不要用strcat函数。 */ 

#include <iostream>
#include <string>
using namespace std;

void scat(char *,char *);
void main()
{
string a,b;
cout<<"enter:"<<endl;
getline(cin,a);
getline(cin,b);
scat(&a[0],&b[0]);
cout<<a<<endl;
}

void scat(char *p,char *q)
{
while(*p != '\0')
{
p++;
}
while(*q != '\0')
{
*p = *q;
p++;
q++;
}
}
[解决办法]

引用:
引用:不要直接修改std::string的内部状态,通过其成员函数进行操作。
C/C++ code?1cout<<(a + b)<<endl;

谢谢,有用,其实我就是想写一个strcat的函数,指针经常出错。



//确保p有足够的空间
void scat(char* p,char const* q)
{
    while(*p)
    {
      p++;
    }
    while(*q)
    {
      *p = *q;
      p++;
      q++;
    }
    //加上这句
    *p = 0;
}
int  main()
{
  char a[32];
  a[0] = 0;
  scat(a, "hello");
  scat(a, " world");
  return 0;
}

[解决办法]
先不考虑string的用法问题,当把a、b传给void scat(char *,char *); 经过这个函数的操作,b的值已经赋给了a,但是此时的a指向的是字符串的最后一位,输出当然是乱的了。你把a在移回去试试。
把a、b定义成字符数组或指针。

热点排行