C++ 使用用户输入从结构返回多个值
我有一个关于结构的问题。我试图让用户输入一个字母,让计算机返回两个值。以下是我到目前为止所拥有的:C++ 使用用户输入从结构返回多个值,c++,struct,C++,Struct,我有一个关于结构的问题。我试图让用户输入一个字母,让计算机返回两个值。以下是我到目前为止所拥有的: #include <iostream> struct coords{ int coordsx1; int coordsy1; } a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p; int main() { char first; int coordsx1; int coordsy1; a.coordsx=0; e.coordsx=0; i.coord
#include <iostream>
struct coords{
int coordsx1;
int coordsy1;
} a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p;
int main()
{
char first;
int coordsx1;
int coordsy1;
a.coordsx=0; e.coordsx=0; i.coordsx=0; m.coordsx=0;
b.coordsx=1; f.coordsx=1; j.coordsx=1; n.coordsx=1;
c.coordsx=2; g.coordsx=2; k.coordsx=2; o.coordsx=2;
d.coordsx=3; h.coordsx=3; l.coordsx=3; p.coordsx=3;
cin >> first;
coordsx1= first.coordsx; // this is the part that doesn't work
}
#包括
结构坐标{
int-coordsx1;
int-coordsy1;
}a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p;
int main()
{
焦优先;
int-coordsx1;
int-coordsy1;
a、 coordsx=0;e.coordsx=0;i.coordsx=0;m.coordsx=0;
b、 coordsx=1;f.coordsx=1;j.coordsx=1;n.coordsx=1;
c、 coordsx=2;g.coordsx=2;k.coordsx=2;o.coordsx=2;
d、 coordsx=3;h.coordsx=3;l.coordsx=3;p.coordsx=3;
cin>>首先;
coordsx1=first.coordsx;//这是不起作用的部分
}
例如,如果用户首先输入变量“d”,我希望计算机将coordsx1的值设置为等于3,coordsy1的值设置为等于0(我还没有完成coordsy1部分)。
另外,这是一种为用户输入返回多个值的好方法吗 用户在
cin>>first
中输入的是文本,它存储在first
中,即char。这是一个包含字符的变量,而不是名称为包含字符的变量,这就是它不起作用的原因
C++没有将变量的文本表示形式转换为变量名所需的自反功能,但您可以使用chainedif
s或更方便的开关显式转换:
switch(first)
{
case 'a':
coordsx1 = a.coordsx;
coordsy1 = a.coordsy;
break;
case 'b':
coordsx1 = b.coordsx;
coordsy1 = b.coordsy;
break;
case 'c':
coordsx1 = c.coordsx;
coordsy1 = c.coordsy;
break;
// All other cases
default:
std::cerr << "Wrong input" << std::endl;
}
开关(第一个)
{
案例“a”:
coordsx1=a.coordsx;
coordsy1=a.coordsy;
打破
案例“b”:
coordsx1=b.coordsx;
coordsy1=b.coordsy;
打破
案例“c”:
coordsx1=c.coordsx;
coordsy1=c.coordsy;
打破
//所有其他情况
违约:
标准:cerr优先;
如果(第一个>c'| |第一个std::cerr用户在cin>>中输入的第一个
是文本,它存储在第一个
中,即char。这是一个包含字符的变量,而不是名称为包含字符的变量,这就是它不起作用的原因
C++没有将变量的文本表示形式转换为变量名所需的自反功能,但您可以使用chainedif
s或更方便的开关显式转换:
switch(first)
{
case 'a':
coordsx1 = a.coordsx;
coordsy1 = a.coordsy;
break;
case 'b':
coordsx1 = b.coordsx;
coordsy1 = b.coordsy;
break;
case 'c':
coordsx1 = c.coordsx;
coordsy1 = c.coordsy;
break;
// All other cases
default:
std::cerr << "Wrong input" << std::endl;
}
开关(第一个)
{
案例“a”:
coordsx1=a.coordsx;
coordsy1=a.coordsy;
打破
案例“b”:
coordsx1=b.coordsx;
coordsy1=b.coordsy;
打破
案例“c”:
coordsx1=c.coordsx;
coordsy1=c.coordsy;
打破
//所有其他情况
违约:
标准:cerr优先;
如果(第一个>c'| |第一个std::cerr用户在cin>>中输入的第一个
是文本,它存储在第一个
中,即char。这是一个包含字符的变量,而不是名称为包含字符的变量,这就是它不起作用的原因
C++没有将变量的文本表示形式转换为变量名所需的自反功能,但您可以使用chainedif
s或更方便的开关显式转换:
switch(first)
{
case 'a':
coordsx1 = a.coordsx;
coordsy1 = a.coordsy;
break;
case 'b':
coordsx1 = b.coordsx;
coordsy1 = b.coordsy;
break;
case 'c':
coordsx1 = c.coordsx;
coordsy1 = c.coordsy;
break;
// All other cases
default:
std::cerr << "Wrong input" << std::endl;
}
开关(第一个)
{
案例“a”:
coordsx1=a.coordsx;
coordsy1=a.coordsy;
打破
案例“b”:
coordsx1=b.coordsx;
coordsy1=b.coordsy;
打破
案例“c”:
coordsx1=c.coordsx;
coordsy1=c.coordsy;
打破
//所有其他情况
违约:
标准:cerr优先;
如果(第一个>c'| |第一个std::cerr用户在cin>>中输入的第一个
是文本,它存储在第一个
中,即char。这是一个包含字符的变量,而不是名称为包含字符的变量,这就是它不起作用的原因
C++没有将变量的文本表示形式转换为变量名所需的自反功能,但您可以使用chainedif
s或更方便的开关显式转换:
switch(first)
{
case 'a':
coordsx1 = a.coordsx;
coordsy1 = a.coordsy;
break;
case 'b':
coordsx1 = b.coordsx;
coordsy1 = b.coordsy;
break;
case 'c':
coordsx1 = c.coordsx;
coordsy1 = c.coordsy;
break;
// All other cases
default:
std::cerr << "Wrong input" << std::endl;
}
开关(第一个)
{
案例“a”:
coordsx1=a.coordsx;
coordsy1=a.coordsy;
打破
案例“b”:
coordsx1=b.coordsx;
coordsy1=b.coordsy;
打破
案例“c”:
coordsx1=c.coordsx;
coordsy1=c.coordsy;
打破
//所有其他情况
违约:
标准:cerr优先;
如果(第一个>c'| |第一个
您首先必须了解,运行时中的字符不是编译时的变量定义
你从cin得到的是一个角色,因为你创造了
char first;
因此,如果要从输入中选择输出,必须编写case语句级联,如:
switch ( first ) {
case 'a': coordsx1=a.coordsx; coordsy1=a.coordsy; break;
case 'b': coordsx1=b.coordsx; coordsy1=b.coordsy; break;
... a lot more ...
default: std::cerr << "Unknown value entered" << std::endl;
}
开关(第一个){
案例“a”:coordsx1=a.coordsx;coordsy1=a.coordsy;break;
案例“b”:coordsx1=b.coordsx;coordsy1=b.coordsy;break;
……更多。。。
默认值:std::cerrUps:-)
您首先必须了解,运行时中的字符不是编译时的变量定义
你从cin得到的是一个角色,因为你创造了
char first;
因此,如果要从输入中选择输出,必须编写case语句级联,如:
switch ( first ) {
case 'a': coordsx1=a.coordsx; coordsy1=a.coordsy; break;
case 'b': coordsx1=b.coordsx; coordsy1=b.coordsy; break;
... a lot more ...
default: std::cerr << "Unknown value entered" << std::endl;
}
开关(第一个){
案例“a”:coordsx1=a.coordsx;coordsy1=a.coordsy;break;
案例“b”:coordsx1=b.coordsx;coordsy1=b.coordsy;break;
……更多。。。
默认值:std::cerrUps:-)
您首先必须了解,运行时中的字符不是编译时的变量定义
你从cin得到的是一个角色,因为你创造了
char first;
因此,如果要从输入中选择输出,必须编写case语句级联,如:
switch ( first ) {
case 'a': coordsx1=a.coordsx; coordsy1=a.coordsy; break;
case 'b': coordsx1=b.coordsx; coordsy1=b.coordsy; break;
... a lot more ...
default: std::cerr << "Unknown value entered" << std::endl;
}
开关(第一个){
案例“a”:coordsx1=