C ++缺少输入(需要打印出test1的值)

时间:2015-07-01 08:07:01

标签: c++ vector

希望打印出test1的值。我只是想问一下test1的值是如何打印出来的,只打印出来" PRINT START"和"打印结束"。任何帮助或想法都非常感激。

#include <vector>
#include <iostream>

using namespace std;

void print_out(vector<int> numbers)
{

    cout << "------------- PRINT START -------------" << endl;

    for( auto i: numbers )
        cout << i << endl;

    cout << "------------- PRINT END -------------" << endl;
}

vector<int> beautify(vector<string> numbers)
{

    vector<int> result;
    return result;
}

int main()
{

    vector<string> test1;
    test1.push_back("3167389213");
    test1.push_back("32989741893");
    test1.push_back("2138");

    print_out(beautify(test1));
    return 0;
}

更新

谢谢,所以我已经在美化中应用了代码,尽管它仍然无法输出test1值。

vector<int> beautify(vector<string> numbers)
{
    vector<int> result;
    for (auto & i : numbers)
        result.push_back(std::stoi(i));
    return result;
}

2 个答案:

答案 0 :(得分:1)

好的,这是你的程序流程:

  • 您创建一个空矢量
  • 使用包含数字的字符串填充
  • 您使用参数print_out调用beautify(test1)函数,因此我们需要查看beautify()返回的内容。
  • beautify()返回一个空向量(int)
  • print_out()打印空矢量中的所有元素,所以没有。

此代码是等效的,可能会澄清一些内容:

int main()
{

    vector<string> test1;
    test1.push_back("3167389213");
    test1.push_back("32989741893");
    test1.push_back("2138");

    vector<int> newVector = beautify(test1);
    print_out(newVector); //here newVector is empty
    return 0;
}

您可能想要做的是在beautify()函数中,将字符串向量转换为int向量。见How do I convert vector of strings into vector of integers in C++?

答案 1 :(得分:0)

更正您的beautify功能

vector<int> beautify(vector<string> numbers)
{
    vector<int> result;
    for (auto & i : numbers)
        result.push_back(std::stoi(i));
    // If results are to be sorted
    std::sort(result.begin(), result.end());
    return result;
}

此外,以字符串形式推送的整数超出范围。

test1.push_back("3167389213");    // outside the range of int
test1.push_back("32989741893");

请参阅http://ideone.com/vOeMHi演示