串联问题

时间:2018-12-08 17:32:19

标签: c++

我想获取三个用户输入值A,B,C,然后创建一个存储这三个值的新整数,称为容量。我希望整数用逗号分隔,但是当我输出整数容量时,它仅返回C的值。我不知道如何解决此问题。

#include <iostream>

using namespace std;

int main()
{
    int A;
    cout <<"Enter Capacity of Jug A"<< endl;
    cin >>A;
    int B;
    cout <<"Enter Capacity of Jug B"<< endl;
    cin >>B;
    int C;
    cout <<"Enter Capacity of Jug C"<< endl;
    cin >>C;

    int capacity;
    capacity = (A, B, C);
    cout <<"capacity is "<< capacity;

    return 0;
}

5 个答案:

答案 0 :(得分:3)

您可以像这样使用数组:

#include <iostream>

using namespace std;

int main()
{
    int A;
    cout << "Enter Capacity of Jug A" << endl;
    cin >> A;

    int B;
    cout << "Enter Capacity of Jug B" << endl;
    cin >> B;

    int C;
    cout << "Enter Capacity of Jug C" << endl;
    cin >> C;

    int capacity[3];
    capacity[0] = A;
    capacity[1] = B;
    capacity[2] = C;

    cout << "capacity is " << capacity[0] << "," << capacity[1] << "," << capacity[2];

    return 0;
}

答案 1 :(得分:0)

解决您的问题的一种方法是创建一个int值数组。在数组的每个位置上都存储一个int值。

int capacity[3];
cin >> capacity[0];
cin >> capacity[1];
cin >> capacity[2];
cout << capacity[0] << ", " << capacity[1] << ", " << capacity[2] << endl;

但是,更好的方法是使用循环。 for,例如:

    for (int i = 0; i < 3; ++ i)
    {
        cout <<"Enter Capacity of Jug "<< i << endl;
        cin >> capacity[i];
    }

与打印方式相同。

有关数组的更多信息:https://www.tutorialspoint.com/cplusplus/cpp_arrays.htm
有关for循环的更多信息:https://www.tutorialspoint.com/cplusplus/cpp_for_loop.htm

答案 2 :(得分:0)

  

我希望整数用逗号分隔,但是当我输出整数容量时,它只返回C的值。

int capacity;拥有它是不现实的。 int只能保存整数值(在一定范围内)。

您已用串联问题为问题加上标题,这使我相信您正在寻找一个std::string来保存字符串值。 然后,您可以用字符串文字用逗号分隔整数。

#include <iostream>
#include <string>    // std::string

int main()
{
    // ... omitted for brevity

    // use std::string, and CONCATENATE using the + operator
    std::string capacity = "(" + std::to_string(A) + ", " + std::to_string(B) + ", " + std::to_string(C) + ")";

    // ... do something with `capacity` ?

    std::cout << "capacity is " << capacity << '\n';

    return 0;
}

伙计,很多。除非您打算将字符串用于其他目的,否则应直接使用std::cout(如Bolov's answer)输出值,或者根据需要使用std::stringstream

#include <iostream>

int main()
{
    // ... omitted for brevity

    std::cout << "capacity is (" << A << ", " << B << ", " << C << ")\n";

    return 0;
}

答案 3 :(得分:0)

您只需编写以下代码即可:

#include <iostream>

using namespace std;

int main()
{
    int A;
    cout << "Enter Capacity of Jug A" << endl;
    cin >> A;

    int B;
    cout << "Enter Capacity of Jug B" << endl;
    cin >> B;

    int C;
    cout << "Enter Capacity of Jug C" << endl;
    cin >> C;

    cout << "capacity is " << A << "," << B << "," << C << endl;

    return 0;
}

答案 4 :(得分:0)

怎么了?

您根本无法在一个int变量中存储三个int值。这没有道理。您需要其他数据类型来存储这些值,我将在后面解释。

发生了什么事?

当您在右侧表达式中用,分隔值时,编译器会将它们视为多个表达式( expr1 expr2 等)。并按顺序评估它们,但返回最后一个结果(即代码中C的值)。因此,capacity始终等于C也就不足为奇了。

什么是正确的解决方案?

有多种方法可以解决此问题。

使用 struct

您可以定义一个结构并将值存储为其字段:

struct caps {
    int A, B, C;
};

caps c = { A, B, C };

使用 std::array(自C ++ 11起)

std::array<int, 3> c = { A, B, C };

使用 std::tuple(自C ++ 11起)

std::tuple<int, int, int> c = std::make_tuple(A, B, C);