728x90
반응형

c++ 71

양식 기반 웹 사이트 인증에 대한 확실한 가이드

질문 : 양식 기반 웹 사이트 인증에 대한 확실한 가이드 우리는 Stack Overflow가 매우 구체적인 기술적 질문에 대한 리소스 일뿐만 아니라 일반적인 문제의 변형을 해결하는 방법에 대한 일반적인 지침을 제공해야한다고 믿습니다. "웹 사이트에 대한 양식 기반 인증"은 이러한 실험에 적합한 주제 여야합니다. 로그인 방법 로그 아웃하는 방법 로그인 상태를 유지하는 방법 쿠키 관리 (권장 설정 포함) SSL / HTTPS 암호화 비밀번호 저장 방법 비밀 질문 사용 잊어 버린 사용자 이름 / 암호 기능 교차 사이트 요청 위조 (CSRF) 를 방지하기 위해 임시 값 사용 OpenID "기억하기"확인란 사용자 이름 및 암호의 브라우저 자동 완성 비밀 URL (다이제스트로 보호되는 공용 URL) 비밀번호 안전성..

“Big O”표기법에 대한 일반적인 영어 설명

질문 : “Big O”표기법에 대한 일반적인 영어 설명은 무엇입니까? 가능한 한 적은 형식적인 정의와 간단한 수학을 선호합니다. 답변 참고로, 이것은 Big O 표기법 (상한)과 Theta 표기법 "Θ"(양면 경계)를 거의 확실히 혼동합니다. 제 경험상, 이것은 실제로 비 학문적 인 환경에서의 일반적인 토론입니다. 혼란을 드려 죄송합니다. Big O 복잡성은 다음 그래프로 시각화 할 수 있습니다. Big-O 표기법에 대해 줄 수있는 가장 간단한 정의는 다음과 같습니다. Big-O 표기법은 알고리즘의 복잡성을 상대적으로 표현한 것입니다. 그 문장에는 몇 가지 중요하고 의도적으로 선택된 단어가 있습니다. 상대 : 사과와 사과 만 비교할 수 있습니다. 산술 곱셈을 수행하는 알고리즘을 정수 목록을 정렬하는 알고..

C ++에서 배열 사용 방법

질문 : C ++에서 배열을 어떻게 사용합니까? 거의 모든 곳에서 사용되는 C에서 C ++ 상속 배열. C ++는 사용하기 쉽고 오류가 덜 발생하는 추상화를 제공하므로 ( std::vector C ++ 98 이후 및 std::array C ++ 11 이후) 배열이 필요하지 않습니다. C 에서처럼 자주 발생합니다. 그러나 레거시 코드를 읽거나 C로 작성된 라이브러리와 상호 작용할 때 배열의 작동 방식을 확실히 파악해야합니다. 이 FAQ는 다섯 부분으로 나뉩니다. 유형 수준의 배열 및 요소 액세스 배열 생성 및 초기화 할당 및 매개 변수 전달 다차원 배열 및 포인터 배열 배열 사용 시 일반적인 함정 이 FAQ에서 중요한 것이 누락되었다고 생각되면 답변을 작성하고 여기에 추가 부분으로 링크하십시오. 다음 텍스..

C ++에서 문자열을 토큰화 하는 방법

질문 : C ++에서 문자열을 어떻게 토큰화 합니까? Java에는 편리한 분할 방법이 있습니다. String str = "The quick brown fox"; String[] results = str.split(" "); C ++에서이 작업을 수행하는 쉬운 방법이 있습니까? 답변 C ++ 표준 라이브러리 알고리즘은 콘크리트 컨테이너가 아닌 반복자를 기반으로하는 매우 보편적입니다. split 기능을 제공하기가 어렵습니다. 비록 아무도 이것이 편리하다고 주장하지 않더라도 말입니다. 그러나 반환 유형은 무엇입니까? std::vector ? 그럴 수도 있지만 (잠재적으로 중복되고 비용이 많이 드는) 할당을 수행해야합니다. 대신 C ++는 임의적으로 복잡한 구분 기호를 기반으로 문자열을 분할하는 다양한 방법을 ..

C ++에서 클래스와 구조체 사용시기

질문 : C ++에서 언제 클래스와 구조체를 사용해야합니까? 어떤 시나리오에서 C ++에서 struct 대 class 를 사용하는 것이 더 낫습니까? 답변 C ++에서 class 와 struct 의 차이점은 다음과 같습니다. struct 멤버와 기본 클래스 / 구조체는 기본적으로 public class 멤버와 기본 클래스 / 스트럿은 기본적으로 private 클래스와 구조체는 모두 public , protected 및 private 멤버를 혼합하여 가질 수 있으며 상속을 사용할 수 있으며 멤버 함수를 가질 수 있습니다. 추천합니다 : 클래스와 유사한 기능이없는 일반 오래된 데이터 구조에 struct 를 사용하십시오. private 또는 protected 멤버, 기본이 아닌 생성자 및 연산자 등과 같은 기..

C / C ++에서 "->"연산자가 의미하는 것

질문 : C / C ++에서 "->"연산자는 무엇입니까? comp.lang.c++.moderated 에서 Hidden Features and Dark Corners of C ++ / STL 을 읽은 후 다음 코드 조각이 Visual Studio 2008과 G ++ 4.4에서 컴파일되고 작동한다는 사실에 완전히 놀랐습니다. 코드는 다음과 같습니다. #include int main() { int x = 10; while (x --> 0) // x goes to 0 { printf("%d ", x); } } 산출: 9 8 7 6 5 4 3 2 1 0 GCC에서도 작동하기 때문에 이것이 C라고 가정합니다. 이것이 표준에서 정의 된 위치와 출처는 어디입니까? 답변 --> 은 연산자가 아닙니다. 실제로 두 개의 개..

전체 ASCII 파일을 C ++ std :: string [duplicate]로 읽기

질문 : 전체 ASCII 파일을 C ++ std :: string [duplicate]로 읽기전체 파일을 메모리로 읽어서 C ++ std::string 에 배치해야합니다.char[] 로 읽으면 대답은 매우 간단합니다.std::ifstream t; int length; t.open("file.txt"); // open input file t.seekg(0, std::ios::end); // go to the end length = t.tellg(); // report location (this is the length) t.seekg(0, std::ios::beg); // go back to the beginning buffer = new char[length]; // allocate memory for ..

문자열에 C ++의 문자열이 포함되어 있는지 확인

질문 : 문자열에 C ++의 문자열이 포함되어 있는지 확인std::string 유형의 변수가 있습니다. std::string 포함되어 있는지 확인하고 싶습니다. 어떻게할까요?문자열이 있으면 true를 반환하고 그렇지 않으면 false를 반환하는 함수가 있습니까?답변std::string::find 를 다음과 같이 사용하십시오.if (s1.find(s2) != std::string::npos) { std::cout

.CPP 파일에 C ++ 템플릿 함수 정의 저장

질문 : .CPP 파일에 C ++ 템플릿 함수 정의 저장헤더에 인라인 대신 CPP 파일에 저장하고 싶은 템플릿 코드가 있습니다. 어떤 템플릿 유형이 사용 될지 아는 한 이것이 가능하다는 것을 알고 있습니다. 예를 들면 :.h 파일class foo { public: template void do(const T& t); }; .cpp 파일template void foo::do(const T& t) { // Do something with t } template void foo::do(const int&); template void foo::do(const std::string&); 마지막 두 줄에 유의하십시오. foo :: do 템플릿 함수는 int 및 std :: strings에서만 사용되므로 이러한 정의..

C ++에서 POD 유형이란?

질문 : C ++에서 POD 유형은 무엇입니까? 이 용어 POD 유형을 몇 번 보았습니다. 무슨 뜻이에요? 답변 POD 는 Plain Old Data를 의미합니다. 즉, 생성자, 소멸자 및 가상 멤버 함수가없는 class struct 또는 키워드 class로 정의되었는지 여부)입니다. POD에 대한 Wikipedia의 기사 는 좀 더 자세히 설명하고 다음과 같이 정의합니다. C ++의 Plain Old Data Structure는 PODS 만 멤버로 포함하고 사용자 정의 소멸자, 사용자 정의 복사 할당 연산자 및 멤버 포인터 유형의 비 정적 멤버가없는 집계 클래스입니다. C ++ 98 / 03에 대한이 답변 에서 더 자세한 내용을 찾을 수 있습니다. C ++ 11은 POD를 둘러싼 규칙을 변경하여 크게 ..

C ++에서 현재 시간과 날짜를 얻는 방법

질문 : C ++에서 현재 시간과 날짜를 얻는 방법은 무엇입니까? C ++에서 현재 날짜와 시간을 가져 오는 크로스 플랫폼 방법이 있습니까? 답변 C ++ 11에서는 std::chrono::system_clock::now() 예 ( en.cppreference.com 에서 복사) : #include #include #include int main() { auto start = std::chrono::system_clock::now(); // Some computation here auto end = std::chrono::system_clock::now(); std::chrono::duration elapsed_seconds = end-start; std::time_t end_time = std::chr..

stringstream 변수를 지우는 방법

질문 : stringstream 변수를 어떻게 지우나요? 벌써 몇 가지 시도 해봤는데 std::stringstream m; m.empty(); m.clear(); 둘 다 작동하지 않습니다. 답변 모든 표준 라이브러리 유형에 대해 멤버 함수 empty() 는 명령이 아니라 쿼리입니다. 즉 "비어 있습니까?"를 의미합니다. "콘텐츠를 버리십시오"가 아닙니다. clear() 멤버 함수는 ios 에서 상속되며 스트림의 오류 상태를 지우는 데 사용됩니다. 예를 들어 파일 스트림의 오류 상태가 eofbit (파일 끝)으로 설정된 경우 clear() 오류 상태를 goodbit (오류 없음). stringstream 의 내용을 지우려면 다음을 사용하십시오. m.str(""); 다음을 사용하지만 정확합니다. m.str(..

개발관련/other 2021.06.11

C와 C ++ 모두에서 유효한 코드가 각 언어로 컴파일 될 때 다른 동작을 생성하는 방법

질문 : C와 C ++ 모두에서 유효한 코드가 각 언어로 컴파일 될 때 다른 동작을 생성 할 수 있습니까? C와 C ++에는 많은 차이가 있으며 모든 유효한 C 코드가 유효한 C ++ 코드는 아닙니다. ( "유효"란 정의 된 동작이있는 표준 코드를 의미합니다. 즉, 구현 특정 / 정의되지 않은 등이 아닙니다.) C와 C ++ 모두에서 유효한 코드 조각이 각 언어의 표준 컴파일러로 컴파일 될 때 다른 동작을 생성하는 시나리오가 있습니까? 합리적이고 유용한 비교를하기 위해 (질문에서 명백한 허점을 찾으려하지 않고 실질적으로 유용한 것을 배우려고합니다) 다음과 같이 가정 해 보겠습니다. 전처리 기와 관련된 것은 없습니다 (즉 #ifdef __cplusplus , pragma 등의 해킹이 없음을 의미합니다.) ..

C ++에서 인터페이스를 선언하는 방법

질문 : C ++에서 인터페이스를 어떻게 선언합니까? 인터페이스를 나타내는 클래스를 어떻게 설정합니까? 이것은 추상 기본 클래스입니까? 답변 bradtgmurray 의 답변을 확장하려면 가상 소멸자를 추가하여 인터페이스의 순수 가상 메서드 목록에 한 가지 예외를 만들 수 있습니다. 이를 통해 구체적인 파생 클래스를 노출하지 않고도 포인터 소유권을 다른 당사자에게 전달할 수 있습니다. 인터페이스에는 구체적인 멤버가 없기 때문에 소멸자는 아무것도 할 필요가 없습니다. 함수를 가상과 인라인으로 정의하는 것은 모순되는 것처럼 보일 수 있지만 저를 믿으십시오. 그렇지 않습니다. class IDemo { public: virtual ~IDemo() {} virtual void OverrideMe() = 0; }; ..

표준 C ++ / C ++ 11 / C를 사용하여 파일이 존재하는지 확인하는 가장 빠른 방법

질문 : 표준 C ++ / C ++ 11 / C를 사용하여 파일이 존재하는지 확인하는 가장 빠른 방법은 무엇입니까? 표준 C ++ 11, C ++ 또는 C에 파일이 있는지 확인하는 가장 빠른 방법을 찾고 싶습니다. 수천 개의 파일이 있고 파일에 대해 작업을 수행하기 전에 모든 파일이 있는지 확인해야합니다. 다음 함수에서 /* SOMETHING */ 대신 무엇을 쓸 수 있습니까? inline bool exist(const std::string& name) { /* SOMETHING */ } 답변 글쎄요, 저는 이러한 방법을 각각 100,000 번 실행하는 테스트 프로그램을 함께 던졌습니다. 절반은 존재하는 파일이고 절반은 그렇지 않은 파일입니다. #include #include #include #inclu..

C ++에서 ifstream을 사용하여 한 줄씩 파일 읽기

질문 : C ++에서 ifstream을 사용하여 한 줄씩 파일 읽기file.txt의 내용은 다음과 같습니다.5 3 6 4 7 1 10 5 11 6 12 3 12 4 여기서 5 3 은 좌표 쌍입니다. C ++에서이 데이터를 한 줄씩 어떻게 처리합니까?첫 번째 줄을 얻을 수 있지만 파일의 다음 줄은 어떻게 얻습니까?ifstream myfile; myfile.open ("file.txt"); 답변먼저 ifstream 만듭니다.#include std::ifstream infile("thefile.txt"); 두 가지 표준 방법은 다음과 같습니다.모든 줄이 두 개의 숫자로 구성되어 있고 토큰별로 읽는다고 가정합니다. int a, b; while (infile >> a >> b) { // process pair (..

정적 std :: map 초기화<int, int> C ++에서

질문 : 정적 std :: map 초기화 C ++에서정적지도를 초기화하는 올바른 방법은 무엇입니까? 초기화 할 정적 함수가 필요합니까?답변C ++ 11 사용 :#include using namespace std; map m = {{1, 'a'}, {3, 'b'}, {5, 'c'}, {7, 'd'}}; Boost.Assign 사용 :#include #include "boost/assign.hpp" using namespace std; using namespace boost::assign; map m = map_list_of (1, 'a') (3, 'b') (5, 'c') (7, 'd'); 출처 : https://stackoverflow.com/questions/138600/initializing-a-sta..

C ++에서 가상 함수가 필요한 이유

질문 : C ++에서 가상 함수가 필요한 이유는 무엇입니까? 저는 C ++를 배우고 있으며 가상 기능을 배우고 있습니다. 내가 읽은 (책과 온라인에서) 가상 함수는 파생 클래스에서 재정의 할 수있는 기본 클래스의 함수입니다. virtual 을 사용하지 않고 파생 클래스의 기본 함수를 재정의 할 수있었습니다. 그래서 내가 여기서 무엇을 놓치고 있습니까? 나는 가상 기능에 더 많은 것이 있다는 것을 알고 있으며, 그것이 중요한 것 같아서 그것이 정확히 무엇인지 분명히하고 싶습니다. 온라인에서 정답을 찾을 수 없습니다. 답변 virtual 기능이 무엇인지 이해하는 방법뿐만 아니라 필요한 이유입니다. 다음 두 클래스가 있다고 가정 해 보겠습니다. class Animal { public: void eat() { ..

C ++ 여러 줄 문자열 리터럴

질문 : C ++ 여러 줄 문자열 리터럴Perl과 같이 C ++에서 여러 줄의 일반 텍스트, 상수 리터럴을 사용하는 방법이 있습니까? #include 파일을 파싱하는 트릭일까요? 하나는 생각할 수 없지만, 그거 좋겠네요. 나는 그것이 C ++ 0x에있을 것이라는 것을 안다.답변글쎄요 .. 가장 쉬운 방법은 인접한 문자열 리터럴이 컴파일러에 의해 연결된다는 사실을 사용하는 것입니다.const char *text = "This text is pretty long, but will be " "concatenated into just a single string. " "The disadvantage is that you have to quote " "each part, and newlines must be li..

C ++에서 개인 정적 멤버를 초기화하는 방법

질문 : C ++에서 개인 정적 멤버를 초기화하는 방법은 무엇입니까? C ++에서 개인 정적 데이터 멤버를 초기화하는 가장 좋은 방법은 무엇입니까? 내 헤더 파일에서 이것을 시도했지만 이상한 링커 오류가 발생합니다. class foo { private: static int i; }; int foo::i = 0; 클래스 외부에서 개인 멤버를 초기화 할 수 없기 때문이라고 생각합니다. 그래서 이것을하는 가장 좋은 방법은 무엇입니까? 답변 클래스 선언은 헤더 파일 (또는 공유되지 않는 경우 소스 파일)에 있어야합니다. 파일 : foo.h class foo { private: static int i; }; 그러나 초기화는 소스 파일에 있어야합니다. 파일 : foo.cpp int foo::i = 0; 초기화가 헤..

C ++에서 extern을 사용하는 경우

질문 : C ++에서 extern을 사용하는 경우 "Think in C ++"를 읽고 있는데 방금 extern 선언을 소개했습니다. 예를 들면 : extern int x; extern float y; 나는 의미 (정의없는 선언)를 이해한다고 생각하지만 그것이 언제 유용하다고 증명되는지 궁금합니다. 누군가 예를 들어 줄 수 있습니까? 답변 이것은 전역 변수가있을 때 유용합니다. 헤더에 전역 변수의 존재 를 선언하여 헤더를 포함하는 각 소스 파일이 이에 대해 알지만 소스 파일 중 하나에서 한 번만 "정의"하면됩니다. 명확히하기 위해 extern int x; x int 유형의 객체가 어딘가에 존재 함을 컴파일러에 알립니다. 그것이 존재하는 위치를 아는 것은 컴파일러의 일이 아닙니다. 단지 타입과 이름 만 알고..

728x90
반응형