c ++ char数组输入 - 解释

时间:2017-03-27 09:20:08

标签: c++ arrays

我有一个练习来编写一个接收句子的程序,然后从每个单词中取出第一个字母并创建一个新单词。

我的代码:

int main(){

char* str = new char[50];

for (int i = 0; i < 50; i++)
    str[i] = NULL;

cin >> str; 

cout<<str;

for (int i = 0; i < 50; i++) 
    cout << str[i]; 


system("pause");
return 0;
} 

但是当我想要打印句子时,它只打印第一个单词。

input: 
abcdef abc des

output: 
abcdef abc des
abcdef *******************************************

当我按下一个进入阵列的空间时? 如何知道我何时使用FOR循环在数组上运行何时到达有空格的字符?

2 个答案:

答案 0 :(得分:3)

cin >> str;在找到空格字符时停止。

用它来阅读整行:

std::string myStr;
std::getline( std::cin, myStr);

注意:您必须包含<string>

答案 1 :(得分:0)

命令输入应包含由空格分隔的多个参数。出于这个原因,std::cin遵循相同的语义,并按空格划分输入。

WRITE YOUR INPUTS:
> hello world

std::cin视为2个输入。

input1: hello
input2: world

您可以多次致电std::cin以获取它们:

std::string str1, str2, str;
std::cin >> str1;
std::cin >> str2;
str = str1 + " " + str2;

显然,在大多数情况下,我们不知道用户输入了多少单词,并且多次调用std::cin会使程序阻止新输入。

作为替代方案,getline允许获得单个输入:

std::string str;
std::getline(std::cin, str);