将输入读入C风格的字符串

时间:2014-09-15 20:29:42

标签: c++ c string

我正在为我的编程类开发一个项目,需要我使用字符串。该程序首先要求用户输入一个短语。通常我会声明如下:

    string phrase;

然后我会用:

    getline(cin,phrase);

然而,教授告诉班级我们不允许使用字符串类,我们必须只使用基于c的字符串。我可能错了,但我相信基于c的字符串看起来像这样:

    char phrase[12] = "hello world";

如果这是我的教授通过基于c的字符串的意思,那么我不知道如何在其中输入短语。当我尝试这个时,程序只存储短语的第一个单词并在它看到的第一个空格处停止。例如:

    char phrase[12];

    cin >> phrase;

//input: hello world

    cout << phrase;

//output: hello

任何建议都会有所帮助,非常感谢,谢谢。

2 个答案:

答案 0 :(得分:2)

您需要使用cin.getline(var_id, var_length)而不是cin >> var_id,这会在遇到spacenew line时停止将变量存储在变量中。

如果您想了解有关cin.getline的更多信息及其使用可能导致的问题,可以查看以下帖子:Program skips cin.getline()

答案 1 :(得分:0)

如果要将输入读入静态字符数组,则可以使用sizeof(charArray)来确定其最大长度。但考虑到最后一个符号将是行尾,因此您可以在此数组中读取最大长度-1 符号。

char phrase[12] ;
cin.getline(phrase, sizeof(phrase));