programing

std::cin 입력에 공백이 있습니까?

instargram 2023. 9. 9. 08:53
반응형

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::strings.

갱신하다

당신의 편집된 질문은 원본과 거의 유사하지 않습니다.

당신은 당신이 하려는 것이었습니다.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 웨이

사용가능getscstdio(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

반응형