환경 변수 가져오기(C++)
get_environment_variable.cpp
#include <cstdlib>
#include <string>
#include <stdexcept>
std::string get_environment_variable(const char* environment_name) {
size_t buf;
char buffer[1024];
if (getenv_s(&buf, buffer, 1024, environment_name)) throw std::runtime_error("read error");
if (buf == 0) throw std::runtime_error("not such environment variable");
return std::string(buffer);
}
사용 예main.cpp
#include <iostream>
#include <stdexcept>
int main() {
try {
std::cout << get_environment_variable("UserProfile") << std::endl;
return 0;
}
catch(std::exception &er){
std::cout << er.what() << std::endl;
return -1;
}
}
실행 결과와 echo 명령으로 불렀을 때의 결과 비교
실행 결과
echo 명령으로 불렀을 때의 결과
나는 반드시 버퍼 구역의 사이즈를 낭비할 것이라고 생각하지만, 그만두어라.
게임을 만들 때 환경 변수라고 부르려면 일본어 경로를 구상해야 한다.
컴퓨터가 기본 수준밖에 안 되는 사람들이 일본어로 많이 쓰이기 때문이다.
@iwadon씨의 조언에 따라 재제작되었습니다.
get_environment_variable.cpp#include <cstdlib>
#include <string>
#include <stdexcept>
std::string get_environment_variable(const char* environment_name) {
size_t buf;
if (getenv_s(&buf, NULL, 0, environment_name)) throw std::runtime_error("read error");
if (buf == 0) throw std::runtime_error("not such environment variable");
getenv_s(&buf, buffer, buf, environment_name);
return std::string(buffer);
}
사용 방법은 같다.
@yumetodo씨가 한층 더 편집을 진행했습니다.
get_environment_variable.cpp#include <cstdlib>
#include <string>
#include <stdexcept>
std::string get_environment_variable(const char* environment_name) {
size_t buf;
if (getenv_s(&buf, NULL, 0, environment_name)) throw std::runtime_error("read error");
if (buf == 0) throw std::runtime_error("not such environment variable");
std::string buffer;
buffer.resize(buf + 1);//reserve
getenv_s(&buf, &buffer[0], buf, environment_name);
buffer.resize(std::strlen(buffer.c_str()));//resize
return buffer;
}
물론 사용법은 변하지 않는다.
Reference
이 문제에 관하여(환경 변수 가져오기(C++)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/AinoMegumi/items/edc89463d04abfb486bc
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
#include <cstdlib>
#include <string>
#include <stdexcept>
std::string get_environment_variable(const char* environment_name) {
size_t buf;
if (getenv_s(&buf, NULL, 0, environment_name)) throw std::runtime_error("read error");
if (buf == 0) throw std::runtime_error("not such environment variable");
getenv_s(&buf, buffer, buf, environment_name);
return std::string(buffer);
}
#include <cstdlib>
#include <string>
#include <stdexcept>
std::string get_environment_variable(const char* environment_name) {
size_t buf;
if (getenv_s(&buf, NULL, 0, environment_name)) throw std::runtime_error("read error");
if (buf == 0) throw std::runtime_error("not such environment variable");
std::string buffer;
buffer.resize(buf + 1);//reserve
getenv_s(&buf, &buffer[0], buf, environment_name);
buffer.resize(std::strlen(buffer.c_str()));//resize
return buffer;
}
Reference
이 문제에 관하여(환경 변수 가져오기(C++)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/AinoMegumi/items/edc89463d04abfb486bc텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)