一道关于C++的问题

来源:百度知道 编辑:UC知道 时间:2024/05/27 03:17:18
void aaa(string &x,string &y,int m)
{
int i=m-1,j=0;

while(x[i]!='\n')
{
y[j]=x[i];//这样赋值可以吗?

i++;
j++;
}
}
这个函数用于将一个字符串后一段复制到另一个上并输出
我想问的是:这样赋值可以吗?

你这么做的话应该是用字符数组存放字符串,用string是不可以这么赋值的

我猜你学C++没多久吧?
这是一段很简单的程序,不需要另外再用函数来实现,另外C++中读出来的string就是以空格为终止条件的,所以一段string中不可能有换行符,如果你读不到换行符,就一直i++,结果将使i超过x.length()造成溢出,所以这段程序感觉不太对。而且我的理解是能不用指针最好不要用,容易错,虽然有的情况是省空间,但是这里根本没必要这样做,直接在main里写就可以了。
建议(在原来你的思想基础上):把while loop改成while(i<x.length())这样就可以了。
个人推荐for loop,实质跟while loop一样,但是for loop 把initialization,condition,action写在一个括号内,可读性增强了,而且很好找,好改。

可是可以,但很容易溢出

不行,string是一个类,所以这里的x,y是对象的引用。由于string类重载了"+, =,<,>"这几个运算符,所以可以直接运算。比如把x接到y后面可以用x+y,把x赋给y可以用y=x.
注意:使用string类须有如下预编译命令:
#include <string>
如果是:
#include <string.h>
或是:
#include <cstring>
则对字符串处理方式同C语言,需使用相应库函数。