【问题标题】:how to take multiple string inputs using getline()如何使用 getline() 获取多个字符串输入
【发布时间】:2022-01-05 21:21:33
【问题描述】:

我必须使用cin.getline() 接受多个字符串输入,并且我编写了以下代码。我尝试使用替代解决方案,例如使用 cin.ignore(),但似乎效果不佳。

#include <iostream>
#include <cstring>
using namespace std;

class Node{
    public:
        char str_1[25];
        char str_2[25];
};

int main(){
    Node *test;
    cout << "Str_1: ";
    cin.getline(test->str_1, 25);
    //cin.ignore();    
    cout << "Str_2: ";
    cin.getline(test->str_2, 25);
    return 0;
}

即使使用cin.ignore() 命令,该解决方案也不需要第二个字符串。

我不是一个非常高级的编码器,所以请尝试用简单的术语解释解决方案。

【问题讨论】:

  • 另请注意,当您开始为变量编号时,通常您希望使用数组或向量。
  • Node *test; 你忘了把 test 指向一个有效的 Node 对象。
  • 其实我需要这个来解决双链表问题。这就是为什么类被命名为节点。这只是我实际需要做的简化版本。实际上,test 是一个指针数组。
  • 既然回答了这个问题,您可能需要提出一个全新的问题,对问题进行更好的描述,包括输入、输出和minimal reproducible example。在您提出的代码中,代码中的问题是未定义的行为,因为您没有初始化 test 以指向任何东西。目前尚不清楚为什么您在阅读线路时遇到问题,或者为什么您认为需要在调用 cin.getline(test-&gt;str_1, 25); 之间使用 cin.ignore();

标签: c++ class input


【解决方案1】:

由于test是指针,所以需要手动分配内存来存储数据。您可以使用 new 关键字来执行此操作。试试这个:

Node *test = new Node;

【讨论】:

  • 使用完毕后不要忘记delete Node 对象:delete test1;
  • 确实如此。感谢您编辑我的答案
猜你喜欢
  • 2017-12-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-21
相关资源
最近更新 更多