读书人

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

发布时间: 2013-04-20 19:43:01 作者: rapoo

连接连个字符串后,输出有乱码,求助
/* 编一程序,将两个字符串连接起来,不要用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定义成字符数组或指针。

读书人网 >C++

热点推荐