在c ++中将句子作为输入
To take sentence as a input in c++
我正在尝试一个接一个地输入两个句子,但是在打印时打印出一个空白 space 并且在下一行打印出第一个句子并且正在退出循环.
这是我的代码:
int main()
{
char b[100000];
char c[100000];
int t;
cin>>t;
while(t--)
{
cin.getline(b,100000);
cin.getline(c,100000);
cout<<b<<"\n"<<c<<"\n";
}
}
输入:
1
run run
good sentence
输出:
Blankspace
run run
大数组不是好主意。请尝试使用 std::string。
#include <iostream>
#include <string>
int main() {
std::string lineOne;
std::string lineTwo;
std::getline(std::cin, lineOne);
std::getline(std::cin, lineTwo);
std::cout << lineOne << "\n" << lineTwo;
return 0;
}
原因是cin>>t
停在第一个非数字字符,即换行符处。下一个 cin.getline(b,100000)
将这个换行符读入 b 和 "run run"
到 c
.
为避免这种情况,您可以先将换行符读入其他地方。喜欢
cin >> t;
// read the newline character
getchar();
while(t--){...}
cin >>t;
这将提示用户进行一些输入。假设用户按照预期的方式进行操作,他们将键入一些数字,然后按下回车键。
数字将存储在输入缓冲区中,但换行符也将存储在输入缓冲区中,换行符是在他们按下回车键时添加的。
cin 将解析数字以生成一个整数,并将其存储在 num 变量中。它在换行符处停止,该换行符保留在输入缓冲区中。
cin.getline(b,100000);
cin.getline(c,100000);
稍后,您调用 cin.getline(b,100000);
,它在输入缓冲区中查找换行符。它会立即找到一个,因此不需要提示用户进行更多输入。所以看起来第一次调用 getline 没有做任何事情,但实际上它做了。
我正在尝试一个接一个地输入两个句子,但是在打印时打印出一个空白 space 并且在下一行打印出第一个句子并且正在退出循环.
这是我的代码:
int main()
{
char b[100000];
char c[100000];
int t;
cin>>t;
while(t--)
{
cin.getline(b,100000);
cin.getline(c,100000);
cout<<b<<"\n"<<c<<"\n";
}
}
输入:
1
run run
good sentence
输出:
Blankspace
run run
大数组不是好主意。请尝试使用 std::string。
#include <iostream>
#include <string>
int main() {
std::string lineOne;
std::string lineTwo;
std::getline(std::cin, lineOne);
std::getline(std::cin, lineTwo);
std::cout << lineOne << "\n" << lineTwo;
return 0;
}
原因是cin>>t
停在第一个非数字字符,即换行符处。下一个 cin.getline(b,100000)
将这个换行符读入 b 和 "run run"
到 c
.
为避免这种情况,您可以先将换行符读入其他地方。喜欢
cin >> t;
// read the newline character
getchar();
while(t--){...}
cin >>t;
这将提示用户进行一些输入。假设用户按照预期的方式进行操作,他们将键入一些数字,然后按下回车键。
数字将存储在输入缓冲区中,但换行符也将存储在输入缓冲区中,换行符是在他们按下回车键时添加的。
cin 将解析数字以生成一个整数,并将其存储在 num 变量中。它在换行符处停止,该换行符保留在输入缓冲区中。
cin.getline(b,100000);
cin.getline(c,100000);
稍后,您调用 cin.getline(b,100000);
,它在输入缓冲区中查找换行符。它会立即找到一个,因此不需要提示用户进行更多输入。所以看起来第一次调用 getline 没有做任何事情,但实际上它做了。