我试图转到字符串的末尾,然后返回到最后一个空格,然后继续前进到单词的结尾并将该单词存储在空字符串中。不允许使用数组或指针。
string getLastWord(string text)
{
string lastword="";
int last=text.size()- 1;
int beginlast=0;
if text == "";
return "";
for (int i=last; i>=1; i--)
{
if (isspace(text[i]))
beginlast=beginlast+i;
}
for (int k=0; k!=text.size; k++)
{
if (isalpha(text[k]))
lastword=lastword+lastword[k];
}
return lastword;
}
答案 0 :(得分:7)
string.find_last_of( ' ' );
答案 1 :(得分:1)
'AndersK' 的方法非常好。但是如果字符串末尾有空字符怎么办: string text{" my big and long string "};
?
该代码不返回任何最后一个字。
所以我在想... - 为什么不用已经使用过的相同方式检查最后一个字符。然后逐个字符地向后移动,直到找到最后一个单词的字符。然后使用某人已经编写的代码倒退。所以我完成了这个代码块并做了一个函数:
string Last_str_word(const string& text)
{
int i = text.length() - 1;
if (isspace(text[i]))
while (isspace(text[i])) i--;
while (i != 0 && !isspace(text[i])) --i;
string lastword = text.substr(i + 1);
return lastword;
}
它可以工作,您不必担心末尾是否有空字符。它仍然会返回最后一个字。
答案 2 :(得分:0)
也许是这样的。我们先从末端剪掉空格。如果你想考虑其他类型,如果可忽略的空格,你可以简单地扩展它。
std::string input; // your data
std::size_t pos = input.size();
while (input[pos] == ' ' && pos > 0) --pos;
if (pos == 0) { /* string consists entirely of spaces */ }
std::string result = input.substr(input.find_last_of(' ', pos));
手动完成:
std::string input; // your data
std::size_t pos = input.size();
while (input[pos] == ' ' && pos > 0) --pos;
if (pos == 0) { /* string consists entirely of spaces */ }
const std::size_t pos_end = pos;
while (input[pos] == ' ' && pos > 0) --pos;
std::string result = input.substr(pos, pos_end - pos);
答案 3 :(得分:0)
#include<iostream>
#include<string.h>
using namespace std;
int main()
{
int l,d,i;
char a[100];
cout<<"Enter the string: "<<endl;
gets(a);
l=strlen(a);
for(i=0;a[i]!=0;i++)
{
if(a[i]==' ')
d=i;
}
cout<<endl;
cout<<"The last word of the string:"
for(i=d+1;a[i]!=0;i++)
{
cout<<a[i];
}
return 0;
}