在空格后显示结果

时间:2014-11-07 15:34:27

标签: c++

我写过小代码:

#include <iostream>
using namespace std;
int main()
{
    string str = "hello world";

    for(int i = 0; i < str.size(); i++)
    {
            if(str[i] == ' ')
                      // WHAT?
    }

    system("pause");
    return 0;
}

如何在空格后显示结果?

示例:&#34; hello world n#34;

答案:&#34;世界&#34;

感谢。

3 个答案:

答案 0 :(得分:4)

使用std::string::substr

找到空间位置后,使用std::string::find
string str = "hello world";
auto n = str.find(" ");     // std::string::size_type n =
if (n != std::string::npos ) 
{
    std::cout << str.substr( n+1 );
}

答案 1 :(得分:3)

#include <iostream>
using namespace std;
int main()
{
    string str = "hello world";

    size_t len = str.size();
    size_t space;
    if ((space = str.find(' ')) != string::npos) {
        cout << str.substr(space + 1, len-space) << '\n';
    }
    return 0;
}
当字符串中没有(在此示例中)空格字符时,npos方法返回

find()。如果找到了,则使用substr()方法以便在空格后获取字符串的一部分。

答案 2 :(得分:2)

试试这个:

#include <iostream>
#include <string>
using namespace std;

int main() {
// your code goes here
string str = "hello world";
cout << str.substr( str.find(' ') + 1, string::npos );
return 0;
}

我使用std::string方法find()substr()

find()返回空格出现的位置/位置(&#39;&#39;),然后传递给substr(),从该位置开始返回string直到最后。

如果您注意到substr()的第一个参数,它比find()返回的参数多1个。这是因为你想在空间后打印任何,而且不得包含空间本身!因此,添加1指向空格后的字符。