【发布时间】: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->str_1, 25);之间使用cin.ignore();