std::cin 입력에 공백이 있습니까?
#include <string>
std::string input;
std::cin >> input;
사용자가 "Hello World"를 입력하려고 하는데,cin
두 단어 사이의 간격에서 실패합니다.어떻게 만드나요?cin
전부를 차지하다Hello World
?
사실 구조물을 이용해서 하는 건데요.cin.getline
효과가 없는 것 같습니다.제 암호는 이렇습니다.
struct cd
{
std::string CDTitle[50];
std::string Artist[50];
int number_of_songs[50];
};
std::cin.getline(library.number_of_songs[libNumber], 250);
그러면 오류가 발생합니다.무슨 생각 있어요?
그것은 "실패"하는 것이 아니라 읽기를 멈출 뿐입니다.이것은 어휘적 토큰을 " 문자열"로 봅니다.
용도:
#include <string>
#include <iostream>
int main()
{
std::string name, title;
std::cout << "Enter your name: ";
std::getline(std::cin, name);
std::cout << "Enter your favourite movie: ";
std::getline(std::cin, title);
std::cout << name << "'s favourite movie is " << title;
}
이는 다음과 같지 않음을 유의하십시오.std::istream::getline
, C 스타일로 작동하는char
완충제가 아닌 완충제std::string
s.
갱신하다
당신의 편집된 질문은 원본과 거의 유사하지 않습니다.
당신은 당신이 하려는 것이었습니다.getline
의 상태가 된int
, 문자열 또는 문자 버퍼가 아닙니다.스트림의 포맷 작업은 다음과 같은 경우에만 작동합니다.operator<<
그리고.operator>>
. 그 중 하나를 사용하거나(그리고 다중 단어 입력을 위해 그에 따라 조정), 또는 를 사용합니다.getline
사전적으로 로 변환합니다.int
사후의
다음을 사용해야 합니다.
char input[100];
cin.getline(input,sizeof(input));
표준 라이브러리는 다음과 같은 입력 기능을 제공합니다.ws
, 입력 스트림에서 빈 공간을 소비합니다.다음과 같이 사용할 수 있습니다.
std::string s;
std::getline(std::cin >> std::ws, s);
용도:
getline(cin, input);
함수는 에서 찾을 수 있습니다.
#include <string>
.getline 함수를 cin으로 사용하려고 합니다.
#include <iostream>
using namespace std;
int main () {
char name[256], title[256];
cout << "Enter your name: ";
cin.getline (name,256);
cout << "Enter your favourite movie: ";
cin.getline (title,256);
cout << name << "'s favourite movie is " << title;
return 0;
}
여기서 예를 들어봤습니다.더 많은 정보와 예시를 위해 그것을 확인하세요.
입력에서 문자열을 읽으려면 어떻게 해야 합니까?
다음과 같이 하나의 공백으로 종료된 단어를 읽을 수 있습니다.std::cin
다음과 같이:
#include<iostream>
#include<string>
using namespace std;
int main()
{
cout << "Please enter a word:\n";
string s;
cin>>s;
cout << "You entered " << s << '\n';
}
명시적인 메모리 관리가 없으며 오버플로 가능성이 있는 고정된 크기의 버퍼도 없습니다.한 단어가 아닌 전체 줄이 필요한 경우 다음 작업을 수행할 수 있습니다.
#include<iostream>
#include<string>
using namespace std;
int main()
{
cout << "Please enter a line:\n";
string s;
getline(cin,s);
cout << "You entered " << s << '\n';
}
C 웨이
사용가능gets
cstdio(stdio)에 함수가 있습니다.힌트):
#include<cstdio>
int main(){
char name[256];
gets(name); // for input
puts(name);// for printing
}
C++ 방식
gets
는 c++11에서 제거됩니다.
[권장]:에 있는 getline(cin, name)을 사용할 수 있습니다.string.h
또는 cin.getline(이름,256)에 있는iostream
그 자체.
#include<iostream>
#include<string>
using namespace std;
int main(){
char name1[256];
string name2;
cin.getline(name1,256); // for input
getline(cin,name2); // for input
cout<<name1<<"\n"<<name2;// for printing
}
저는 오히려 다음과 같은 방법을 사용하여 입력을 받습니다.
#include <iostream>
#include <string>
using namespace std;
int main(void) {
string name;
cout << "Hello, Input your name please: ";
getline(cin, name);
return 0;
}
공백 문자가 포함된 문자열의 전체 배열 길이를 정의하는 것보다 실제로 사용하기가 매우 쉽습니다.
언급URL : https://stackoverflow.com/questions/5838711/stdcin-input-with-spaces
'programing' 카테고리의 다른 글
mysql 구성이 "서버 시작"에서 중지됨 (0) | 2023.09.09 |
---|---|
항목의 모든 조상을 가져오는 SQL 재귀 쿼리 (0) | 2023.09.09 |
자바스크립트 함수를 5초마다 연속 호출 (0) | 2023.09.09 |
도커: 도커 컨테이너에서 나노 실행 (0) | 2023.09.09 |
OLAP 큐브에서 특성이 필터링될 때 Grand Total이 잘못되었습니다. (0) | 2023.09.09 |