首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

问一个C++的非常奇怪的一个有关问题

2012-09-06 
问一个C++的非常奇怪的一个问题下面的函数是输入一段文字 当遇到相同的两个单词 挨在一起的时候就返回这个

问一个C++的非常奇怪的一个问题
下面的函数是输入一段文字 当遇到相同的两个单词 挨在一起的时候就返回这个单词
char* GetTheSameWrod( char* &returnString)
{
cout<<"please Enter stirng:"<<endl;
string str;
int index = 0;
string pre;
string cur;
while( cin >> str)
{  
if( index == 0 )
{
pre = "";
index = 1;
}
cur = str;
if( cur == pre )
{
returnString = (char*)pre.c_str();
// return returnString;
}
pre = cur;
}
return "";
}
主函数
int main()
{
  char* sameString;
GetTheSameWrod(sameString);
cout<<sameString<<endl;
return 0;
}
输入 A NI NI 
我调试了在函数GetTheSameWrod里面的GetTheSameWrod 都为NI 为什么在主函数里面就变成了空???
这个是什么原因?求大侠们帮助,谢谢!










[解决办法]
返回指向临时变量的指针,可能会出大问题,也可能没问题,有没有问题就要看那些地址的东西是否已经被销毁。。。
[解决办法]
看似楼主没有看明白楼上几位的方法。所以与其给楼主讲一些理论性的知识和指导性的方法,不如给他直接上改好的程序,我就在楼主的源程序基础上加了两个单词。具体看程序注释,看是否符合题意?

C/C++ code
#include <iostream>#include <string>using namespace std;char* GetTheSameWrod( char* &returnString){    cout<<"please Enter stirng:"<<endl;    string str;    int index = 0;    static string pre;//只要把这个改为静态局部变量就OK    static string cur;//只要把这个改为静态局部变量就OK    while( cin >> str)    {           if( index == 0 )        {            pre = "";            index = 1;        }        cur = str;        if( cur == pre )        {            returnString = (char*)pre.c_str();             return returnString;//这里不要注释,必须返回值的哦。        }        pre = cur;    }    return "";}int main(){    char* sameString;    GetTheSameWrod(sameString);    cout<<sameString<<endl;    return 0;} 

热点排行
Bad Request.