C++ 将输入读入C样式字符串

C++ 将输入读入C样式字符串,c++,c,string,C++,C,String,我正在为我的编程类做一个项目,它要求我使用字符串。程序首先要求用户输入一个短语。通常,我会声明如下内容: string phrase; 然后我会使用: getline(cin,phrase); 然而,教授告诉全班同学,我们不允许使用字符串类,我们只能使用基于c的字符串。我可能错了,但我相信基于c的字符串看起来是这样的: char phrase[12] = "hello world"; 如果这就是我的教授所说的基于c的字符串,那么我不知道如何在其中输入短语。当我尝试这

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

    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
char短语[12];
cin>>短语;
//输入:你好,世界

cout您需要使用
cin.getline(var\u id,var\u length)
而不是
cin>>var\u id
,当变量遇到
空格
新行
时,它实际上停止在变量中存储输入


如果你想了解更多关于
cin.getline
及其使用可能导致的问题,你可以看看这篇文章:

你需要使用
cin.getline(var\u id,var\u length)
而不是
cin>>var\u id
,当遇到
空格
新行
时,它实际上停止在变量中存储输入


如果您想更多地了解
cin.getline
以及它的使用可能导致的问题,您可以看看这篇文章:

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

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

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

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


你是说
cin>>短语
cout提取是用空格分隔的。@PaulMcKenzie我认为这取决于它发生的时间。在某种程度上,C++开发人员应该能够使用C风格字符串。教授并不反对弦乐课,他只是希望我们也能这样做,而不是使用
char短语[12]=“hello world”
,最好使用
字符短语[]=“hello world”并让编译器调整数组的大小。你是说
cin>>短语
cout提取是用空格分隔的。@PaulMcKenzie我认为这取决于它发生的时间。在某种程度上,C++开发人员应该能够使用C风格字符串。教授并不反对弦乐课,他只是希望我们也能这样做,而不是使用
char短语[12]=“hello world”
,最好使用
字符短语[]=“hello world”并让编译器调整数组的大小。好的,谢谢,但是如果我不知道用户将键入什么作为短语,我如何计算“var_长度”?指定缓冲区/数组长度。在您看来,创建一个足够大的数组。@BCRwar1
var\u length
是您可以接受的输入量。允许用户键入小于此值的内容。这是使用固定大小数组而不是
字符串
类的限制之一。@code学徒我还有最后一个问题。程序的下一部分是for循环,它一次遍历短语的一个位置,到达短语末尾时停止。例如:对于(intk=0;k=length时结束。如果希望循环在输入的短语完成时结束,可以使用此循环编码:短语[k]!='\0',因为,请记住,任何c字符串都必须以空字符结尾。好的,谢谢,但是如果我不知道用户将键入什么作为短语,我如何计算“var_长度”?请指定缓冲区/数组长度。在您看来,创建一个足够大的数组。@BCRwar1
var\u length
是您可以接受的输入量。允许用户键入小于此值的内容。这是使用固定大小数组而不是
字符串
类的限制之一。@code学徒我还有最后一个问题。程序的下一部分是for循环,它一次遍历短语的一个位置,到达短语末尾时停止。例如:对于(intk=0;k=length时结束。如果希望循环在输入的短语完成时结束,可以使用此循环编码:短语[k]!='\0',因为,记住,任何c字符串都必须以空字符结尾。