我有一个练习来编写一个接收句子的程序,然后从每个单词中取出第一个字母并创建一个新单词。
我的代码:
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循环在数组上运行何时到达有空格的字符?
答案 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);