我之前从未遇到过这个问题。当我按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;
}
答案 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。由于您使用的是动态内存,看起来已经知道了,您以后需要将其释放。