int main(){
char str1[MAX], str2[MAX];
cout <<" 1st string: ";
cin.get(str1, MAX);
cout <<" 2nd string";
cin.get(str2, MAX);
cout << str1 << str2;
return 0;
}
我正在尝试输入一个包含在数组str1和str2中的空格的字符串。问题是程序在第一次输入后终止。
在输出屏幕上:
1st string : abc def
现在当我按Enter键获取第二个数组的输入但是代码终止并显示第一个字符串。
输出: 第二个字符串
abc def
如何正确使用此cin.get()函数来获取2个不同的输入?有没有其他方法可以为char数组带空格的字符串?
答案 0 :(得分:0)
std::string _str;
std::getline (std::cin, _str);
// std::getline (std::cin, _str, _char);
// if you wish to accept input until first appearance of _char
答案 1 :(得分:0)
function getline()处理包含的输入 嵌入式空白或多行。
#include <iostream>
#include <string> //for string class
using namespace std;
int main()
{ //objects of string class
string full_name, address;
getline(cin, full_name); //reads embedded blanks
cout << “Your full name is: “ << full_name << endl;
getline(cin, address, ‘$’); //reads multiple lines
cout << “Your address is: “ << address << endl;
return 0;
}
第一个参数是输入将从中的流对象 来。
第二个参数是将放置文本的字符串对象。
第三个参数指定用于终止输入的字符。 如果没有向getline()提供第三个参数,则假定分隔符为'\ n',表示Enter键。
答案 2 :(得分:0)
使用以下方法代替cin.get()方法:
string s1,s2;
int max1,max2;
for (int i=0; i<max1; i++)
{
char ch = getchar();
while (ch != '\n' && ch != EOF) {
s1+=ch;
ch=getchar();
}
for (int i=0; i<max2; i++)
{
char ch = getchar();
while (ch != '\n' && ch != EOF) {
s2+=ch;
ch=getchar();
}