다음 C 코드를 C++로 번역하고 싶습니다.fscanf C++ equivalent
FILE *fp = NULL;
fp = fopen("./filename", "r");
int i = 0;
fscanf(fp, "%d\n", &i);
uint16_t j = (uint16_t) i;
이 내가이 해낸 것입니다 :
ifstream file;
string filename = "./filename";
file.open(filename.c_str(), ios::in);
errno = 0;
if (file.fail()) {
int tmp = errno;
std::cout << file.c_str() << " not found: strerror(" << tmp << "): " << strerror(tmp));
}
int i = 0;
file >> i >> std::endl;
uint16_t j = (uint16_t) i;
내가 구문이 올바른지 개선 가능한 더 중요하게는 입력의 모든 종류에 대한 안전 여부를인지 알고 싶습니다.
먼저 시도해 보겠습니다. 오류가있을 경우 지역 사회에 "이것이 맞다"라기보다는 구체적으로 질문하십시오. 두 프로그램에 대해 서로 다른 입력을 시도해보고 어느 프로그램에서 어떤 프로그램이 실패했는지 그리고 왜 다른 프로그램인지 확인하십시오. –
아니면 C 코드를 그대로 둘 수 있습니다. C++은 C의 상위 집합입니다. –
@RogerLipscombe : C++ 버전에 따라 다릅니다. C++ 03에는 C99'uint16_t'가 없었으며 모든 사람이 C++ 11로 전환하지 않았습니다. –