为什么我不能在C ++中使用'char'而不是'string'方法?

时间:2013-05-25 12:14:05

标签: c++ string char

#include <iostream>

using namespace std;

int main(){
    char name;
    char city;

    cout << "Please enter your name" << endl
    cin >> name;
    cout << "Please enter your city name" << endl
    cin >> city;

    cout << "Your name is  " << name << "and live in" << city << endl

    return 0;
}

我无法看到我是否遗漏了某些内容,但我在“cin&gt;&gt;”行中收到错误名称;'。我该如何解决?

2 个答案:

答案 0 :(得分:4)

2个问题: char只能容纳一个字符,因此您需要使用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在到达空格时终止,因此"Mohammad Ali"之类的名称将被视为"Mohammad"。对于可接受多个单词的特定目的,您应使用std::getline(cin, str)strstd::string。这将在字符串到达​​'\n'时终止。

(您也可以给std::getline第三个参数来选择自己的分隔符:std::getline(cin, str, '\t')。这会使它在遇到'\t'字符时终止。std::getline具有第三个char参数/参数默认为'\n'。)

答案 1 :(得分:1)

字符变量只能包含一个字符。与char a='x';一样。

如果要在C ++中使用

存储字符串
const char * a = "name";

string a="name";