using-C++编译没错误,运行停止工作,菜鸟求指点

问题描述

C++编译没错误,运行停止工作,菜鸟求指点

#include
#include
using namespace std;

int main()
{

string ch = "";
char*p=&ch[0];
cout <<"input cipher code:";
    gets(p);
cout <<"cipher code:"<<ch<<endl;
int j=0;
for(j=0;j<=ch.size()-1;j++)
{
    if(ch[j]<='A'&&ch[j]>='Z')
        ch[j]=155-ch[j];
        else if (ch[j]<='a'&&ch[j]>='z')
        ch[j]=219-ch[j];
}
cout <<"original text:";
cout <<ch<<endl;

return 0;

}

解决方案

ch是一个常量,不要试图改变它,new一个内存,用strcpy拷贝出来。

解决方案二:

首先说一下,抱歉今天没有详细调试,接着楼上的说,主要的问题时使用string的方法。请一定记住,C++中任何类型都是一种类,操作的时候也是对象为主,即便基本的数据类型,比如整形,也是一种特殊的类。

以下是稍作修改的代码,具体的含义我在其中给出了注释。
//
// 帖子中的include 遗漏了包含的库,我根据理解自己补充了。
//
#include
#include

using namespace std;

int main()
{

string ch; //ch作为string对象有缺省的构造函数,不用刻意初始化。
//char*p=&ch[0]; //此处一定不要直接去ch的地址,因为ch是一个对象,所以此处的操作变为了取ch这个对象的地址;之所以在下文中可以用[ ](即索引操作符)访问string中的每一个字符,是因为string类已经重载了该操作符。但是,请特别注意此处的[]已经不是基本类型使用的索引操作符了,因为它不再是简单的返回某个元素的地址。

cout <<"input cipher code:";
// gets(p); //这是C中的函数,建议不要与字符串混用。C++中单独提供string类的用途就是能管理字符串,尽量不出现缓冲区溢出等直接访问字符串地址时出现的负面效果。
getline(cin,ch) ; //请使用getline这个函数进行输入流操作。
cout <<"cipher code:"<<ch<<endl;

int j=0;
for(j=0;j<=ch.size()-1;j++)
{
if(ch[j]<='A' && ch[j]>='Z')
ch[j]=155-ch[j];
else if (ch[j]<='a' && ch[j]>='z')
ch[j]=219-ch[j];
}
cout <<"original text:"
<<ch<<endl;

return 0;

}

另,上述的程序似乎逻辑还有些问题,我今天手头还有事,没来得及仔细看,如果需要可以留言,改天再讨论。

解决方案三:

string不是简单的char类型数组,不能直接char*p=&ch[0]; 这样取到的指针不是真正用于存储数据的地址指针。而且你拿到对应指针,然后直接往里面填充数据也是不对的吧,这样string的管理会有问题吧

解决方案四:

可以运行,但是for循环只能执行一次,为什么啊

时间: 2024-10-02 14:49:40

using-C++编译没错误,运行停止工作,菜鸟求指点的相关文章

c语言 链表 输入问题,编译没错误, 运行 错误

问题描述 c语言 链表 输入问题,编译没错误, 运行 错误 #include #define M 20 int f(char a[]) { int i ; i=0; while (a[i]='n') i++; i--; while (i>0&& a[i]==' '||a[i]=='t') i--; if(i>0) { i++; a[i]='n'; i++; a[i]=''; } return 1; } int getline (char s[],int lim ) { int

wpf-VS2010创建的WPF浏览器程序运行时浏览器就停止工作了求指导

问题描述 VS2010创建的WPF浏览器程序运行时浏览器就停止工作了求指导 我用的WIN7操作系统(旗舰版),浏览器是用IE9.VS2010创建的WPF浏览器程序运行时浏览器就停止工作了,代码没有错误,请各位高手指导下. xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xml

C++提取矩阵txt文件,结果运行程序,提示 .exe已停止工作,求帮助一下,谢谢啦!

问题描述 C++提取矩阵txt文件,结果运行程序,提示 .exe已停止工作,求帮助一下,谢谢啦! #include <iostream> #include <fstream> #include <string> using namespace std; ifstream& openFile(ifstream& in, const string& fileName) { in.open(fileName.c_str()); return in; }

微信-Android项目导入第三方jar包编译没问题运行却报错·

问题描述 Android项目导入第三方jar包编译没问题运行却报错· 最近在弄微信分享的api,导入了微信的sdk,然而运行的时候说没有那些对应的类,jar包我是复制到libs下再add to build path的,为何会无法引入?????真心求解·郁闷死 解决方案 类似问题我也出过,我当初是v4包太老了,换个新的v4包就好了.你看看是不是你的libs是老的. 解决方案二: 感觉还是路径的问题.查一下WXAPIFactory 解决方案三: 分享微信的时候,还需要额外的一个类. public c

net office-net调用office组件,弹出 Excel已经停止工作,求解决方法!

问题描述 net调用office组件,弹出 Excel已经停止工作,求解决方法! 在读取Excel的时候,在遍历单元格的时候,弹出Excel停止工作的对话框,点击对话框中关闭程序的时候,程序跳到catch中捕捉到异常,出错的代码,是在遍历列的时候出错的,求解决方法!!! 解决方案 如果只是读数据可以使用OLBC来读,也就是将excel看做access,这样比较快 解决方案二: 遍历的方法对吗,是不是有判断获取的元素是否为空等 解决方案三: 我这里要写数据,对于同一个文件,用只读的方式打开的时候,

maven-Maven工程 工程名上有错误 但是打开以后都没错误 这是为什么啊 求大神讲解

问题描述 Maven工程 工程名上有错误 但是打开以后都没错误 这是为什么啊 求大神讲解 Maven工程 工程名上有错误 但是打开以后都没错误 这是为什么啊 求大神讲解 解决方案 JDK或web 设置不一致 看看这里http://www.thinksaas.cn/group/topic/335949/ 解决方案二: 很有可能是class path 配置的问题.举个例子,比如工程class path中添加了a.jar,但实际上项目里的代码并没有真正使用到a.jar,此时a.jar因为某种原因被物理

net office组件-net调用office组件,弹出 Excel已经停止工作,求解决方法!

问题描述 net调用office组件,弹出 Excel已经停止工作,求解决方法! 在读取Excel的时候,在遍历单元格的时候,弹出Excel停止工作的对话框,点击对话框中关闭程序的时候,程序跳到catch中捕捉到异常,出错的代码,是在遍历列的时候出错的,求解决方法!!!

c语言-C语言链表应用一元多项式相加,程序运行不了,求指点

问题描述 C语言链表应用一元多项式相加,程序运行不了,求指点 #include #include #include //一元多项式相加 typedef int Status; typedef struct Node{ float coef; int expn; struct Node *next; }Node,*LinkList; void CreatList(LinkList &P,int m)//按指数升序将元素依次插到第一个结点前,得到降序的表 { void Insfirst(LinkLi

visual c#command line complier已停止工作

问题描述 最近电脑屏幕上频繁跳出visualc#commandlinecomplier已停止工作.求大神解答 解决方案 解决方案二:重装.netFramwork试下看看?或者你重装一下vs看看?解决方案三:我个人还没有找到在没有重装系统或重装vs2010前提下解决这个问题,但如何你只想查找c#的MSDN的话,不一定需要在vs2010中安装,可以有微软网页查找关于C#的MSDN,不过建议你把VisualC#中包含的内容保存下来,另外网页上的都是新的-_-.."https://msdn.micros