String 如何使用get()同时输入两个字符串;

String 如何使用get()同时输入两个字符串;,string,cin,gets,String,Cin,Gets,我想知道是否有一种方法可以一起输入字符串,就像我们如何输入cin>>a>>b 我们如何使用字符串的gets执行相同的操作?如果您的输入字符串用某种空格分隔(例如“”、“\n”等),那么它将是: gets(s1); gets(s2); 另一种方法是使用。它可以对str1和str2使用两次,并将从流中获取一个输入到字符串中,直到读取num-1字符或达到eos(“\n”、“\t”等)。强烈建议使用此函数,因为它比gets更安全 还有第三种更复杂的方法:您可以定义自己的字符串类(继承自std::st

我想知道是否有一种方法可以一起输入字符串,就像我们如何输入
cin>>a>>b

我们如何使用字符串的
gets
执行相同的操作?

如果您的输入字符串用某种空格分隔(例如“”、“\n”等),那么它将是:

gets(s1);
gets(s2); 
另一种方法是使用。它可以对str1和str2使用两次,并将从流中获取一个输入到字符串中,直到读取num-1字符或达到eos(“\n”、“\t”等)。强烈建议使用此函数,因为它比gets更安全

还有第三种更复杂的方法:您可以定义自己的字符串类(继承自std::string),并在其中定义一个操作符,它将代表get()或fgets();但是这个选择对于你的情况来说实在太复杂和无用了

如果需要使用一个函数,则可以为两个字符串创建重载gets():

    void  gets(char * str1, char * str2)
{
      gets(str1);
      gets(str2);
}

同样的技巧也可以通过FGET实现。但是,对你来说,仅仅调用两个get()或fgets()不是太复杂了吗?

这已经晚了三个月,但可能值得一写,因为唯一的其他答案是非常离谱的

首先,也是最重要的一点,不要使用get()。没有办法安全地使用它:如果我运气好的话,它可能会被称为
溢出我的缓冲区和崩溃我的程序()。它被从最新的C标准中删除是有原因的

第二,
cin>>a>>b
读取两个空格分隔的字符串,例如一个句子中的两个单词
get()
及其更安全的近亲
fgets()
读取一整行,由换行符
'\n'
分隔(请注意,它们不会停止在其他空白字符处!)。因此,复制
cin
的行为要困难得多-您必须自己进行所有解析。(这并不是说它不能完成;如果必须在C中完成,请签出
strtok()


C相当于
cin>>a>>b
scanf()
字符a[80],b[80];scanf(“%79s%79s”,a,b)但是,请注意,您只能读取最大固定长度的字符串(在本例中为79个字符)。在C中安全地读取任意长度的字符串是相当复杂的;您需要以固定大小的块读取它们,并分配足够的内存将这些块组合在一起。

这是错误的
获取
读取以换行符结尾的行;其他空格只是行的一部分。此外,
get
本身就是不安全的,永远不应该使用(从2011年的标准开始,它甚至已经从C中删除)有效,为什么要寻找另一种方法来做同样的事情?