Nav*_*een 0 c++ string function turbo-c++
Turbo C++:我想在不改变原始数据的情况下将字符串传递给函数(按值传递).如何在这段代码中实现???
#include<iostream.h>
#include<conio.h>
#include<string.h>
void pass(char g[20])
{
g[0]=g[2];
cout<<"\nPassed: ";
for(int i=0;i<strlen(g);i++)
cout<<g[i];
}
void main()
{
clrscr();
char a[20];
cout<<"\nEnter the Data: ";
cin.get(a,sizeof a);
int len=strlen(a);
pass(a);
cout<<"\nAfter pass: ";
for(int i=0;i<len;i++)
cout<<a[i];
getch();
}
Run Code Online (Sandbox Code Playgroud)
C中的字符串是具有'\0'最后一个元素的字符数组(用一些语法糖来定义这样的数组).C中的数组不是一等公民; 特别是,它们不能作为参数传递.将数组传递给函数时,该函数将接收指向数组第一个元素的指针.指向内存不会被复制,只有指针是.因此,在修改指向内存时,修改调用函数中的内存.
C++从C继承了这些特性.如果你想使用你所描述的C字符串,你必须手动复制它们,或者在将它们传递给函数之前,或者在函数本身之内.
但是,C++中的首选方法是使用std::stringC++标准库.在您的情况下,声明pass为就足够了
void pass(std::string g)
Run Code Online (Sandbox Code Playgroud)
并替换strlen(g)为g.length().