我正在为我的编程类开发一个项目,需要我使用字符串。该程序首先要求用户输入一个短语。通常我会声明如下:
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
任何建议都会有所帮助,非常感谢,谢谢。
答案 0 :(得分:2)
您需要使用cin.getline(var_id, var_length)
而不是cin >> var_id
,这会在遇到space
或new line
时停止将变量存储在变量中。
如果您想了解有关cin.getline
的更多信息及其使用可能导致的问题,可以查看以下帖子:Program skips cin.getline()
答案 1 :(得分:0)
如果要将输入读入静态字符数组,则可以使用sizeof(charArray)来确定其最大长度。但考虑到最后一个符号将是行尾,因此您可以在此数组中读取最大长度-1 符号。
char phrase[12] ;
cin.getline(phrase, sizeof(phrase));