为什么sort()不起作用?

pyt*_*iku 2 c++ stdvector

我把这个简单的程序读成字符串"13 11 9 10".我想拆分字符串然后对它们进行排序.但是sort()似乎没有用,有什么帮助吗?输入:13 11 9 10,输出:13 11 9 10谢谢!

#include <string>
#include <sstream>
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;

vector<int> split(string s)
{
    istringstream iss(s);
    vector<int> result;

    do{
        string sub;
        iss>>sub;
        if(sub!="")
            result.push_back((int)atoi(sub.c_str()));
    }while(iss);

    return result;
}
int main(void)
{   
    string s;
    while(cin>>s)
    {
        vector<int> vec;
        vec=split(s);
        sort(vec.begin(), vec.end());
        for (int i = 0; i < vec.size(); ++i)
        {
            cout<<vec[i]<<endl;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

use*_*016 9

那是因为cin >> s在第一个空格处停了下来.

换句话说,如果您键入1 4 2 3,仅s包含1,而不是整行.

而是使用以下内容来读取整行:

std::getline(std::cin, s);
Run Code Online (Sandbox Code Playgroud)

  • 另外,不要使用atoi,请看这里http://stackoverflow.com/questions/200090/how-do-you-convert-ac-string-to-an-int (2认同)