편집이 사용 후 :먼저 &에만 건너 CIN, 심지어 cin.ignore에게
글쎄, 난 그냥 바보 당하고 밝혀! 코드와 전혀 관련이 없습니다. 나는 bash 스크립트를 통해 모든 것을 돌리고 있었고, 이전에 그것을 사용하고 있었기 때문에 (어떤 입력이 필요하지도 않았다.) 나는 결국 &으로 실행했다. 그래서 분명히 나는 그 어떤 입력도 얻을 수 없었다. 껍질.
내 프로그램이 cin (다음 줄로 바로 이동)을 사용하여 입력을받는 것처럼 보였습니다.
편집 : 새 코드를 삽입 한 부분과 그 결과를 확인하십시오.
나는 여기를 검색하고 인터넷 검색을했고 사람들이 같은 문제를 겪고있는 많은 질문을 발견했습니다. 내가 아는 한, 문제는 거의 항상 남은 '\ n'이었습니다. 그러나 해결책 중 어느 것도 나를 위해 일하지 않았습니다. 문제가되는 코드는 다음과 같습니다.
//char input_char;
std::string input_string;
//int input_int;
//std::string line;
std::cout << "hello. your input: ";
std::cin.clear();
std::cin.ignore (std::numeric_limits<std::streamsize>::max(), '\n');
std::cin >> input_string;
// std::getline(std::cin, input_string);
std::cout << "input: " << input_int << endl;
한 문자 또는 숫자 만 있으면됩니다. 문자, int 또는 문자열로 시도했습니다. 나는 cin과 getline을 시도했다. 다른 비슷한 질문에 대해 제안 된 바와 같이 명확하고 무시 된 내용을 추가했지만 여전히 동일한 문제가 있습니다.
이 코드는 본문의 시작 부분에 있으므로이 코드를 사용하기 전에 다른 어떤 코드 또는 cin도 사용하지 않습니다. 그러나 이것은 더 큰 프로젝트의 일부이며, 나는 ros를 사용하고 있습니다. 프로그램이이 부분에 도달하기 전에 ro를 통해 처리되는 다른 출력이 있습니다. 다른 입력.
여러분의 도움에 감사드립니다. 나는 정말로 명백한 무엇인가 놓치고 있어야하는 것처럼 느낀다. ...
편집 : 나는 지금이 입력과 직접적으로 관련이없는 모든 것을 주석 처리했으며 cin을 맨 위 맨 위로 옮겼다. 이것은 (주석 부분이 왼쪽으로) 이제 전체 코드입니다 : 프로그램을 죽이는하지
$ ./startDemo.bash
Starting Minimal Example
$ character: a # now I have time to input something, but...
a: Befehl nicht gefunden. # = command not found]
# then it doesn't do anything, so I stop it
$ ./stopDemo.bash
killing /Gestures
did that work?[ WARN] [1473954737.268901991]: Shutdown request received.
[ WARN] [1473954737.268978735]: Reason given for shutdown: [user request]
killed
$
후에 만 출력이 갑자기 나타납니다
#include <iostream>
#include <ros/ros.h>
#include <vector>
#include <ros/console.h>
#include "std_msgs/String.h"
//#include <SharedMessages/MicroconRequest.h>
/* ... */
//ros::Publisher reqPublisher;
//SharedMessages::MicroconRequest reqMsg;
/* ... */
int main(int argc, char* argv[])
{
char input_test;
std::cout << "character: ";
std::cin >> input_test;
std::cout << input_test;
std::cout << "did that work?";
// Handle ROS communication
ros::init(argc, argv, "Gestures");
ros::NodeHandle n;
//ros::Subscriber joy_sub_ = n.subscribe<sensor_msgs::Joy>("joy", 10, joyCallback, this);
//reqPublisher = n.advertise<SharedMessages::MicroconRequest>("MicroconRequest", 10);
ros::Rate loop_rate(10);
// Infinite control loop
while (ros::ok())
{
/* ... */
cntLoop++;
ros::spinOnce();
loop_rate.sleep();
}
// turn off microcontroller
return 0;
}
지금 무슨 일 다음이다. 여기서 무슨 일이 일어나고있는거야? 난 너무 혼란 스러워요.
'무시'하지 않으려합니다 ... 처음에는 'clear'도 무의미합니다. – LogicStuff
cin.sync()를 사용하면 충분합니다. – Raindrop7
입력 해 주셔서 감사합니다! 그것이 도움이되기를 희망하면서 비슷한 문제에서 찾을 수있는 유일한 조언 이었기 때문에 나는 그것들을 추가했다. cin.sync() 시도했지만 불행히도 아무것도 변경하지 않습니다. –