按Enter键时程序不会继续

时间:2018-04-16 00:18:00

标签: c++

我之前从未遇到过这个问题。当我按Enter键接受userInput时程序不执行。有什么理由吗?

#include <iostream>
using namespace std;

struct node{
  char data;
  struct node* left;
  struct node* right;
};


struct node* newNode(int idata){
  struct node* node = new struct node;

  node -> data = idata;
  node -> left = NULL;
  node -> right = NULL;

  return node;
};

void getUserInfo(string &userInput, int &lengthString){
  cout << "A string that contains a dot(.) will be invalid!" << endl;
  cout << "Enter a string ->";
  cin >> userInput;

  // getting the length of string
  lengthString = userInput.length();
}

void stringToChar(char *& charArray, int &lengthString){
  for(int i = 0; i < lengthString; i++){
    cin >> *(charArray+i);
  }
}

int main(){
  string userInput;
  int lengthString = 0;

  char * charArray;
  charArray = new char [lengthString];

  getUserInfo(userInput, lengthString);

  stringToChar(charArray, lengthString);

  /*struct node *root= newNode(9);
  root ->left = newNode(20);
  (*root).right = newNode(3);
  cout << root->right->data;
  */

  return 0;
}

2 个答案:

答案 0 :(得分:0)

您的问题是您的cin方法中有另一个stringToChar。假设你想把字符串变成一个char数组,(根据你的参数判断你所声明的是你想要的)我改变了方法来实现它。

void stringToChar(char *& charArray, int &lengthString, string &userInput){
  for(int i = 0; i < lengthString; i++){
    charArray[i]=userInput[i];
  }
}

答案 1 :(得分:0)

尝试逐步执行调试程序。当我运行你的代码时,如果你为userinput输入一些东西,它就有效。但是,如果您只是按Enter键而没有任何文本,看起来不是您的程序不能继续工作,但命令提示符不会向您的程序返回任何内容。输入给出了新的行字符,据我所知,cin会忽略它。尝试按几次输入,它只会在命令提示中显示新行,而你的程序仍然在同一行上执行。

如果您想使用暂停,请更好地使用os.system('pause')用于Windows。 Unix应该有类似的东西。

我是否回答了你的问题?

P.S。由于您使用的是动态内存,看起来已经知道了,您以后需要将其释放。