use*_*110 0 c++ pointers const function
我给你们全部代码.这有点长,所以我最衷心地希望你得到它:
#include <iostream>
using namespace std;
char const* reverseWordsOnly(const char* s)
{
int k;
int p = strlen(s);
for (int i = 0; i <= p; i++)
{
if (s[i] == ' ')
{
for (k = i - 1; (k != -1) && (s[k] != ' ') && (s[k] != ',') && (s[k] != ';') && (s[k] != '.'); k--)
return &s[k];
return " ";
}
if (s[i] == ',')
{
for (k = i - 1; (k != -1) && (s[k] != ' ') && (s[k] != ',') && (s[k] != ';') && (s[k] != '.'); k--)
return &s[k];
return ",";
}
if (s[i] == ';')
{
for (k = i - 1; (k != -1) && (s[k] != ' ') && (s[k] != ',') && (s[k] != ';') && (s[k] != '.'); k--)
return &s[k];
return ";";
}
if (s[i] == '.')
{
for (k = i - 1; (k != -1) && (s[k] != ' ') && (s[k] != ',') && (s[k] != ';') && (s[k] != '.'); k--)
return &s[k];
return ".";
}
}
}
int main()
{
char s[1002];
cin.getline(s, 1002, '\n');
strcat(s, " ");
reverseWordsOnly(s);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
那么它做了什么..它颠倒了字母中字母的顺序.例如,如果你写下来Something.. terribly wrong.
,它应该返回gnihtemoS.. ylbirret gnorw.
间隔和点代表分隔符.问题是我必须使用这个非常精确的函数char const* reverseWordsOnly(const char*)
,我完全不知道如何使它与这些常量和指针一起工作.我编写的代码是完全可编译的,但只返回控制台中的空白区域.我做错了什么?有任何想法吗?如何在函数中返回那些指针值?
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
char const* reverseWordsOnly(const char* s){
static string work;
work = s;
string::size_type start_pos = 0, end_pos;
while(string::npos != (start_pos = work.find_first_not_of(" .,;", start_pos))){
if(string::npos == (end_pos = work.find_first_of(" .,;", start_pos+1)))
end_pos = work.length();
reverse(&work[start_pos], &work[end_pos]);
start_pos = end_pos + 1;
}
return work.c_str();
}
int main(){
cout << reverseWordsOnly("Something.. terribly wrong.") <<endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)