c++自定义String类的+=功能,请求大神看看 手串帮我看看哪里有需要改进的地方

C++里string类读入问题谢谢了,大神帮忙啊_百度知道
C++里string类读入问题谢谢了,大神帮忙啊
学过C++的人都知道,C++的文件操作有两种,其一是由C继承来的高级I/O,其二是C++独有的流类库,两种读入方式有好有坏,我的问题是能不能用高级I/O读入string类的字符串(不用cin等输入流,用类似scanf的形似)。
提问者采纳
canf是c语言的,而string是c++的类,所以不能使用scanf直接读入 可以考虑中转,参考代码如下:
#include &iostream& #include &string& int main() { char buf[100]; scanf(&%s&, &buf); string str(buf); printf(&%s\n&, str.c_str()); return 0; }
其他类似问题
为您推荐:
string类的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁求c语言,c++大神帮我看看哪里错了?万分感谢!_百度知道
求c语言,c++大神帮我看看哪里错了?万分感谢!
//题目三#include &iostream.h&void main(){ int a,i,k,t; int * cout&&&请输入即将输入的数字的个数。&; cin&&a; array=new int[a]; for(i=0;i&a;i++)
cin&&array[i]; for(i=0;i&a;i++)
for(k=i;k&a;k++)
if (array[k]&array[i])
t=array[i];
array[i]=array[k];
array[k]=t;
} int m,n; cout&&&请输入需要逆序排列的位置及其个数。&&& cin&&m,n; //m代表位置:array【m】,而n是指取array【m】后n个数 if(m+n&a)
cout&&&输入有误&&& else {
for(i=m;i&m+n;i++)
for(k=i;k&m+n;k++)
if (array[k]&array[k+1])
t=array[k];
array[k]=array[k+1];
array[k+1]=t;
} } for(i=0;i&a;i++)
cout&&array[i]&&& &;
cout&&}题目是键盘输入N个数,并进行升序排列。从键盘输入指定位置K和M个数,能够把从指定位置K开始的M个数按逆序重新排列并输出新的完整数列。规则如下:1) N个数:2,4,6,8,10,12,14,16,18,202) K=3,M=43) 输出:2,4,6,14,12,10,8,16,18,20我编译完发现这只能排序,却不能把指定项后面的指定个数逆序输出,请问我错在哪里了呢,又该怎么做呢?
提问者采纳
我学过C,C++没学过,不过大概相同第一个问题应该是,cin&&m,n;
输入的地方写错了这个应该是写成
cin&&m &&n; 或者
cin&&m; cin&&n; 第二个问题,逆序的话,那个控制要改一下,比如说 1 2 3 4 5你输入 2 3 第一遍逆序循环,i=2,k=2,后 会变成
1 2 4 5 3,然后i++,k=i第二遍逆序循环,初值k=3,你的循环,K会从跟后面的交换,相当于说,第四(实际)位置上的5,它只会与后面的3再处理了,不会跟 第三(实际)位置上的4做交换。所以处理的办法是,把你的控制循环改成
for(i=m;i&m+n;i++)
for(k=m;k&m+n;k++)
if (array[k]&array[k+1])
t=array[k];
array[k]=array[k+1];
array[k+1]=t;
}比如说 1 2 3 4 5 6,这个循环就是一个冒泡,你的m=2,n=4, 第一遍 1 2 4 5 6 3第二遍 1 2 5 6 4 3 第三遍 1 2 6 5 4 3第四遍 1 2 6 5 4 3不过你的处理方法不是很好,因为你一开始已经先排好序了,所以 逆序的话,可以采用的办法,就是
两端交换,即从 ,从两端交换到中间去。这样时间复杂度也会比较低。如果是没排好序,要求给其中几个数排序的话,当然就用你上面的方法
提问者评价
真是谢谢您了,一早起来就看见了您的回答,搞清楚了呢。
其他类似问题
为您推荐:
c语言的相关知识
其他1条回答
if (array[k]&array[k+1])改成if (array[k]&array[i])试试吧。
试了,似乎不是这里的问题吧
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁c++构造函数,求大神谁帮我将这代码修理一下,它总是提示错误不让在成员函数类外重新申明该函数_百度知道
c++构造函数,求大神谁帮我将这代码修理一下,它总是提示错误不让在成员函数类外重新申明该函数
#include &iostream&#include&string&class Person{private:char name[10];char tel[8];public:
Person(char *xname,int age,int xsalary,char *xtel);
void disp();};Person::Person(char *xname,int age,int xsalary,char *xtel);{
strcpy(name,xname);
strcpy(tel,xtel);}void Person::disp(){cout&&cout&&&姓名&&&name&&cout&&&年龄&&&age&&cout&&&工资&&&salary&&cout&&&电话&&&tel&&}void main(){
Person obj(&张三&,25,850,&456789&);
obj.disp();}
提问者采纳
Person::Person(char&*xname,int&age,int&xsalary,char&*xtel)//原来的分号不要{&&&&strcpy(name,xname);&&&&salary=&&&&age=&&&&strcpy(tel,xtel);}
提问者评价
谢谢了,找了半天,还以为软件坏了。。。。。
其他类似问题
为您推荐:
构造函数的相关知识
其他1条回答
改成这样吧:#include &iostream&#include&string&class Person{private:char name[10];char tel[8];public:
Person(char *xname,int xage,int xsalary,char *xtel){
strcpy(this-&name,xname);
strcpy(tel,xtel);};
void disp(){cout&& cout&&&姓名&&&name&& cout&&&年龄&&&age&& cout&&&工资&&&salary&& cout&&&电话&&&tel&& };};void main(){
Person obj(&张三&,25,850,&456789&);
obj.disp(); }
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁c++调用java时最好设置自定义类路径 - 邃思园 - ITeye技术网站
博客分类:
&&& 最近在学习C++调用java类的流程,在按照网上示例做的过程中遇到了一些小问题,今天才得以彻底解决
&&&& 按照网上的例子做完后发现程序运行总是失败,原因在于自定义的类JVM无法找到,例子只说让自己编写自定义的类,但并没有说生成的类应该放在什么地方才可以被JVM正确的找到,通常根据需要我们的类是房子特定的目录下的,而且放在jvm路径下也是不安全的,所以在网上的大多数例子都缺少一步,设置自定义类的路径
int main(){
JavaVMInitArgs vm_
JavaVMOption options[3];
vm_args.version=JNI_VERSION_1_4;
/*设置初始化参数*/
options[0].optionString = "-piler=NONE";
/*类路径,相对或绝对,可设多个,分号隔开*/
options[1].optionString = "-Djava.class.path=C:\\java\\RTMP\\";
options[2].optionString = " -Djava.library.path=C:\\java\\RTMP\\lib";
options[3].optionString ="-verbose:jni";
vm_args.nOptions =3;
vm_args.options =
vm_args.ignoreUnrecognized = JNI_TRUE;
//------------------------------加载jvm:
HINSTANCE jvmDll = LoadLibrary("D:\\Program Files\\Java\\jre1.6.0_07\\bin\\client\\jvm.dll");
if (jvmDll == NULL) printf("加载JVM动态库错误。%l", ::GetLastError());
//查找JNI_CreateJavaVM过程。
JNICREATEPROC jvmCreateProc = (JNICREATEPROC)GetProcAddress(jvmDll, "JNI_CreateJavaVM");
if (jvmCreateProc == NULL)
FreeLibrary(jvmDll);
printf("查找JNI_CreateJavaVM过程错误。%l", ::GetLastError());
//创建JVM:
int res = (jvmCreateProc)(&jvm, (void **)&env, &vm_args);
if (res & 0 || jvm == NULL || env == NULL)
FreeLibrary(jvmDll);
printf( "创建JVM发生错误。");
//---------------------------------------------------------------------------------
jclass jcl = env-&FindClass("RTMPHandshake");//加载启动类
if (env-&ExceptionCheck() == JNI_TRUE || jcl == NULL)
FreeLibrary(jvmDll);
printf("加载启动类失败。");
jmethodID mid = env-&GetMethodID(jcl,"generateResponse","([Ljava/lang/S)V");//此处的参数意义见注解1
if (env-&ExceptionCheck() == JNI_TRUE || mid == NULL)
FreeLibrary(jvmDll);
printf("查找启动方法失败。");
//-------------------------调用方法:
env-& CallObjectMethod( jcl, mid); //第3,4…参数就是被调方法的参数
FreeLibrary(jvmDll);
/*自定义类、库路径,相对或绝对,可设多个,分号隔开*/&
& options[1].optionString = "-Djava.class.path=C:\\java\\RTMP\\";&
& options[2].optionString = " -Djava.library.path=C:\\java\\RTMP\\lib";&
现在总算调试通过了,真高兴
浏览: 49931 次
来自: 北京
解决了我的问题,谢谢
对,我用这个方法解决我这个问题c++一道问题。。。不许用string.h的字符串处理,急用求大神!
[问题点数:40分,结帖人q]
c++一道问题。。。不许用string.h的字符串处理,急用求大神!
[问题点数:40分,结帖人q]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
相关推荐:
2013年 总版技术专家分年内排行榜第三
2012年 总版技术专家分年内排行榜第七
2013年6月 C/C++大版内专家分月排行榜第三
匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。

我要回帖

更多关于 大神note3 的文章

 

随机推荐