codeblocks에 strlwr 복제 할 때 :이상한 ASCII 응답 (중국어) 다음 코드는 아주 이상한 결과를 제공 13.12
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("f1.in");
ofstream g("f1.out");
char sir[255];
int i;
char strlwr(char sir[]) //if void nothing changes
{
int i = 0;
for (i = 0; sir[i] != NULL; i++) {
sir[i] = tolower(sir[i]);
}
return 0; //if instead of 0 is 1 it will kinda work , but strlwr(sir) still needs to be displayed
}
int main()
{
f.get(sir, 255);
g << sir << '\n'; // without '\n' strlwr will no more maters
g << strlwr(sir);
g << sir;
return 0;
}
f1.in :
JHON HAS A COW
f1.out :
를䡊乏䠠十䄠䌠坏
桪湯栠獡愠挠睯
단지 CAPS 만 사용하는 경우에만 표시됩니다.
유럽 버전의 우분투 14에서 Code :: Blocks 13.12를 사용하고 있습니다.
나는 이것이 왜 이것을 보여 주는지에 관심이 많습니다.
나는 그것이 당신에게 똑같은 것을주는 지 알고 싶어합니다.
'f1.in'의 내용은 무엇입니까? [mojibake] (https://en.wikipedia.org/wiki/Mojibake)의 결과 인 것 같습니다. (즉, 텍스트는 ASCII이지만 터미널 또는 출력 파서는 UTF-8이라고 생각합니다.) –
conent는 "JHON HASA COW"이며 모두 결과가 f1.out에 표시됩니다. 나는 ASCII 값이 변경되었다고 생각하지만, 프로그램에서 어디에 있는지, 그리고 '\ n'(endl)을 제거하면 그 일이 더 이상 발생하지 않는 이유는 무엇인가. 모기 베크 (Mojibake)가이 문제와 관련이 있을지 모르지만 문제라고 생각하지 않습니다. – George
출력을 보려면 무엇을 사용하고 있습니까? 'cat f1.out' 또는 텍스트 편집기를 사용 하시겠습니까? –