我正在创建一个函数,其中我接受6个值(3个字符串,3个整数),将这些值存储在数组中,然后以2对为单位打印出每个值
这就是我所拥有的:
#include <iostream>
#include <string>
using namespace std;
int main()
{
const int SIZE = 3;
int time[SIZE] = {};
string name[SIZE] = {};
for (int a = 0; a < 3; a++)
{
cout << "Enter runner name: ";
getline (cin, name[+1]);
cout << "Enter runner time: ";
cin >> time[+1];
cin.ignore();
}
for (int a = 0; a < 3; a++)
{
cout << name << " finished in " << time << "\n";
}
return 0;
}
我希望我的输出看起来像这样:
name1 finished in time1
name2 finished in time2
name3 finished in time3
目前,我的输出如下:
0x22fdf0 finished in 0x22fe10
0x22fdf0 finished in 0x22fe10
0x22fdf0 finished in 0x22fe10
如何将输入存储在数组中,然后将这些值输出给用户?
如果已经回答了这个问题,请道歉。我无法找到一个示例,其中数组使用用户输入值填充,然后返回到显示。
答案 0 :(得分:1)
您需要使用[]
下标运算符实际索引数组。同样,在打印时,您应该尝试索引数组中的元素。因为当你试图打印数组本身时,编译器会隐式地将数组转换为指针,当打印时,它将打印该数组中第一个元素的内存地址,而不是元素本身。
因此,您可以取消引用数组以获取每个数组中的第一个值,但更好的方法是使用for循环中的a
变量对其进行索引,如下所示:
#include <iostream>
#include <string>
using namespace std;
int main() {
const int SIZE = 3;
int time[SIZE] = {};
string name[SIZE] = {};
for (int a = 0; a < 3; a++) {
cout << "Enter runner name: ";
getline(cin, name[a]);
cout << "Enter runner time: ";
cin >> time[a];
cin.ignore();
}
for (int a = 0; a < 3; a++) {
cout << name[a] << " finished in " << time[a] << "\n";
}
return 0;
}
或者,如果您不想对其进行索引,则可以使用原始方法,但是您必须使用*
解除引用运算符取消引用指针:
for (int a = 0; a < 3; a++) {
cout << *name << " finished in " << *time<< "\n";
}
但是,现在你只需要打印第一个元素三次。因此,为了解决这个问题,您需要使用一些指针算法,并将值增加a,以分别将元素0,1和2移过第一个元素:
for (int a = 0; a < 3; a++) {
cout << *(name + a) << " finished in " << *(time + a)<< "\n";
}
所以要查看一些内容: *解除 *订阅 *隐式数组到指针转换