问一个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 为什么在主函数里面就变成了空???
这个是什么原因?求大侠们帮助,谢谢!
[解决办法]
返回指向临时变量的指针,可能会出大问题,也可能没问题,有没有问题就要看那些地址的东西是否已经被销毁。。。
[解决办法]
看似楼主没有看明白楼上几位的方法。所以与其给楼主讲一些理论性的知识和指导性的方法,不如给他直接上改好的程序,我就在楼主的源程序基础上加了两个单词。具体看程序注释,看是否符合题意?
#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;}