string 문자열을 scanf로 받을수 있나요?

infoefficiency의 이미지

string type 형을 scanf로 받을 수 있을까요?
string str; 이 있을시 scanf안에 어떻게 선언해야 하는지 잘 모르겠네요 ㅠ 부탁드립니다

감사합니다

klara의 이미지

안됩니다. char[]로 받고 복사하거나 cin을 이용하세요.

익명 사용자의 이미지


굳이 하려고 한다면

scanf("%s",str.c_str());

로 할 수도 있겠지만 절대로 이렇게 하지 않으시는 것을 권장합니다.

익명 사용자의 이미지

scanf는 c++이 아니라 c에서도 그다지 권장하는 함수가 아닌데 c++에서 마저 쓸 필요는 없을 것 같은데요.
getline()이나 cin으로 입력 받으시는 편이 나을 것 같습니다.

그리고 string 은 컴파일러마다 구현이 다를 수가 있고 배열만으로 구현되지 않을 수가 있어서
scanf 같은 함수로 입력 받으시려면 string 보다는 vector에 크기 지정 후 받으셔야 할 겁니다.
참고: [STL] 기존의 C API에 vector와 string을 넘기는 방법(http://dstein.egloos.com/2268196)