I need the getline()
function for some white space, including text input by the user. But instead of the user input, I get a segmentation fault.
Here is a minimized example:
#include <iostream>
#include <string>
#include <ctime>
/**
* Shows main menu.
*
* @version 1.0.0
*
* @return Returns selected option.
*/
unsigned int showMenu() {
unsigned int result;
printf("\n\nSimple transfer\n===============\n\n");
printf("Options:\n-----------\n");
printf(" 1: Receive\n");
printf(" 2: Send\n");
printf("Enter any other number to exit.\n\n");
printf("?: ");
scanf("%u", &result);
return result;
}
// Some functions.
/**
* Entry point.
*
* @version 1.2.0
*
* @return Returns result code.
*/
int main() {
// Initialization.
setbuf(stdout, NULL);
bool expectData;
std::string inMessage, outMessage;
// Run.
while (true) {
switch (showMenu()) {
// Receiving mode.
case 1:
// Some code.
std::cout << "Received.\n";
break;
// Sending mode.
case 2:
outMessage = "Dies ist eine Testnachricht.";
getline(std::cin, outMessage);
printf("Sending: ");
for (unsigned int i = 0; i <= outMessage.length() -1; i++) {
// Some code.
printf("%c", outMessage[i]);
}
printf("\n");
break;
// Exit.
default:
printf("Bye.\n");
return 0;
}
}
}
What is the reason and how can I fix it?