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_长度”?指定缓冲区/数组长度。在您看来,创建一个足够大的数组。@BCRwar1var\u length
是您可以接受的输入量。允许用户键入小于此值的内容。这是使用固定大小数组而不是字符串类的限制之一。@code学徒我还有最后一个问题。程序的下一部分是for循环,它一次遍历短语的一个位置,到达短语末尾时停止。例如:对于(intk=0;k=length时结束。如果希望循环在输入的短语完成时结束,可以使用此循环编码:短语[k]!='\0',因为,请记住,任何c字符串都必须以空字符结尾。好的,谢谢,但是如果我不知道用户将键入什么作为短语,我如何计算“var_长度”?请指定缓冲区/数组长度。在您看来,创建一个足够大的数组。@BCRwar1var\u length
是您可以接受的输入量。允许用户键入小于此值的内容。这是使用固定大小数组而不是字符串类的限制之一。@code学徒我还有最后一个问题。程序的下一部分是for循环,它一次遍历短语的一个位置,到达短语末尾时停止。例如:对于(intk=0;k=length时结束。如果希望循环在输入的短语完成时结束,可以使用此循环编码:短语[k]!='\0',因为,记住,任何c字符串都必须以空字符结尾。