2 个问题: Achar
只能包含一个字符,因此您需要使用 an std::string
,并且在行尾缺少分号。
// Here
cout << "Please enter your name" << endl
// Here
cout << "Please enter your city name" << endl
// And here
cout << "Your name is " << name << "and live in" << city << endl
编译器需要分号才能知道您正在终止当前语句。这主要是为了消除歧义,它允许我们做这样的事情:
x = some_routine(boost::some_very_long_function_name0<type>(some_args0),
boost::some_very_long_function_name1<type>(some_args1),
boost::some_very_long_function_name2<type>(some_args2));
// Terminates the current statement ^
这样,我们就不必处理非常非常长的线路。这是一个双赢。
最后一件事:cin >> name
当它到达一个空格时终止,所以一个名字 like"Mohammad Ali"
会被读作"Mohammad"
. 对于这个可以接受多个单词的特殊目的,您应该使用std::getline(cin, str)
where str
is an std::string
。这将在字符串到达 a 时终止该字符串'\n'
。
(您还可以提供std::getline
第三个参数来选择您自己的分隔符:std::getline(cin, str, '\t')
。这使它在遇到'\t'
字符时终止。默认情况下std::getline
具有第三个char
参数/参数'\n'
。)