gpt4 book ai didi

c++ - 如何在函数中返回一个 const char*?

转载 作者:太空宇宙 更新时间:2023-11-04 15:42:10 27 4
gpt4 key购买 nike

我给你们我的全部代码。它有点长,所以我真诚地希望你能理解它:

#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;
}

那么它做了什么.. 它颠倒了字符串中单词字母的顺序。例如,如果您写下 Something.. terrible 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;
}

关于c++ - 如何在函数中返回一个 const char*?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21352564/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com