cin 可以连接到字符串变量吗?
Can cin be connected to a string variable?
例如,如果我输入'a'
,我如何打印出变量a
的值,即"0 1"
?
string a = "0 1"; string c = "1 1";
string b = "0 1"; string d = "1 1";
cin>>
cout <<
你问的是某种像某些解释语言那样的内省,但 C++ 不能那样工作。
这不是思考 C++ 程序(或任何其他编译语言)的正确方式,一旦程序编译,源代码中的标识符就会真正消失。
换句话说,输入的字符(例如"a"
)和源代码中的变量std::string a
之间没有自动关联。
您必须手动执行此操作:
#include<string>
int main(){
std::string a = "0 1";
std::string b = "0 1";
std::string c = "1 1";
std::string d = "1 1";
char x; std::cin >> x;
switch(x){
case 'a': std::cout << a << std::endl; break;
case 'b': std::cout << b << std::endl; break;
case 'c': std::cout << c << std::endl; break;
case 'd': std::cout << d << std::endl; break;
default: std::cout << "not such variable" << std::endl;
}
}
您确定要找的不是 map 吗?
#include <iostream>
#include <string>
#include <map>
using namespace std;
int main(void) {
map<string, string> m;
m.insert(pair<string, string>("a", "0 1"));
m.insert(pair<string, string>("b", "0 1"));
m.insert(pair<string, string>("c", "1 1"));
m.insert(pair<string, string>("d", "1 1"));
string user_choice = "a";
cout << "Which letter?" << endl;
cin >> user_choice;
cout << "For " << user_choice << ": "
<< m.at(user_choice) << endl;
}
A std::map
言出必行。它将一种类型的值映射到另一种类型,这听起来就像您正在尝试做的那样,并且它在不使用变量名的情况下这样做,正如其他人指出的那样,变量名在编译后被丢弃。
然后可以使用标准模板库中提供的函数对地图执行各种有用的操作。
例如,如果我输入'a'
,我如何打印出变量a
的值,即"0 1"
?
string a = "0 1"; string c = "1 1";
string b = "0 1"; string d = "1 1";
cin>>
cout <<
你问的是某种像某些解释语言那样的内省,但 C++ 不能那样工作。
这不是思考 C++ 程序(或任何其他编译语言)的正确方式,一旦程序编译,源代码中的标识符就会真正消失。
换句话说,输入的字符(例如"a"
)和源代码中的变量std::string a
之间没有自动关联。
您必须手动执行此操作:
#include<string>
int main(){
std::string a = "0 1";
std::string b = "0 1";
std::string c = "1 1";
std::string d = "1 1";
char x; std::cin >> x;
switch(x){
case 'a': std::cout << a << std::endl; break;
case 'b': std::cout << b << std::endl; break;
case 'c': std::cout << c << std::endl; break;
case 'd': std::cout << d << std::endl; break;
default: std::cout << "not such variable" << std::endl;
}
}
您确定要找的不是 map 吗?
#include <iostream>
#include <string>
#include <map>
using namespace std;
int main(void) {
map<string, string> m;
m.insert(pair<string, string>("a", "0 1"));
m.insert(pair<string, string>("b", "0 1"));
m.insert(pair<string, string>("c", "1 1"));
m.insert(pair<string, string>("d", "1 1"));
string user_choice = "a";
cout << "Which letter?" << endl;
cin >> user_choice;
cout << "For " << user_choice << ": "
<< m.at(user_choice) << endl;
}
A std::map
言出必行。它将一种类型的值映射到另一种类型,这听起来就像您正在尝试做的那样,并且它在不使用变量名的情况下这样做,正如其他人指出的那样,变量名在编译后被丢弃。
然后可以使用标准模板库中提供的函数对地图执行各种有用的操作。