2017-02-06 8 views
-2

내가 명령 프롬프트에서 좋은새로운 라인은 파일 출력에 n을 함께 볼 수있다

#include <iostream> 
#include <set> 
#include <sstream> 

int main() 
{ 
    std::set<std::string> a; 
    a.insert("foo"); 
    a.insert("bar"); 
    a.insert("zoo"); 
    a.insert("should"); 
    a.insert("work"); 
    std::stringstream b; 
    std::set<std::string>::iterator it; 
    for (it = a.begin(); it != a.end(); it++) 
    { 
     b << " " << *it <<"," <<"\n"; 

    } 

    std::string aaa = b.str(); 
    std::cout <<aaa; 
} 

출력 실행이 코드가 있습니다

bar, //new line after "," 
foo, //new line after "," 
should, 
work, 
zoo, 

하는 경우를 나는 동일한 문자열을 파일에 쓰려고 노력한다. 같은 출력이 파일에서 인쇄를하기를 기대하고있다. ","새 줄에 다음과 같이 출력한다. (한 줄에 \ n) :

" bar,\n foo,\n should,\n work,\n zoo,\n" 

아무도 도와 줄 수 있습니까?

boost::property_tree::ptree pt1; 
pt1.put("Output", aaa); 
boost::property_tree::write_json("result.json", pt1); 

이 JSON 파일, 위의 코드의 출력을 작성합니다 : 다음

내가 파일에 쓰고 어떻게 : 파일에 문자열을 작성하는 방법에

추가 정보 (Windows - NotePad/NotePad ++)는 다음과 같습니다 :

{ 
    "Output": " bar,\n foo,\n should,\n work,\n zoo,\n" 
} 
+5

Windows 또는 Linux를 사용하고 있습니까? 줄 끝의 차이와 같은 소리가 문제입니다. – NathanOliver

+0

어떻게 파일을 열어보고 있습니까? 편집기에서 여는 경우 따옴표 나 '\ n'을 볼 수 없습니다. –

+0

문제가있는 파일을 파일에 쓰는 코드를 게시하십시오. –

답변

3

일반 파일을 쓰지 않습니다! JSON 라이브러리를 사용하여 파일을 작성하고 있습니다. 그리고 JSON 문자열에서 C 소스 파일과 마찬가지로 줄 끝 문자가 이스케이프 처리됩니다 ("\n").

그래서 요약하면 예상되는 동작입니다. 정상적인 줄 끝 문자를 얻으려면 fopen() 및 친구와 함께 일반 파일을 작성하십시오.

+0

JSON을 ouput으로 사용하고 있습니다. 파일을 만드는 대신 라이브러리를 사용하기 쉽습니다. 이 Boost JSON 라이브러리에서 일반적인 EOL 문자를 사용할 수있는 방법이 있습니까? –

+0

@silent_programmer : 그 요구 사항은 이해가 안됩니다. LF 문자는 JSON 문자열 내에서 유효하지 않으므로 '\ n' (또는'\ u000a')로 인코딩되어야합니다. 텍스트를 적절한 행으로 나누려면 JSON 뷰어를 사용할 수 있습니다. 나는 거기에 몇 가지 밖에 있는지 모르지만 ... 일반 텍스트 편집기는 당신을 보여주지 않을 것입니다. – rodrigo

+0

@silent_programmer : JSON 테마가 어려운 요구 사항이 아니라면 [이 질문] (http://stackoverflow.com/questions/5257049/what-is-the-most-elegant-way-to-write -a-text-binary-file-with-c). – rodrigo

1

이것은 예상되는 동작입니다.

JSON으로 인코딩하기 위해 문자열 (줄 바꿈 포함)을 JSON 라이브러리에 전달하고 있습니다. 인코딩 단계에는 줄 바꿈을 "\ n"부분으로 변환하는 작업이 포함됩니다. 그 이유는 JSON에서 줄 안에 줄 바꿈을 표시하는 방법이기 때문입니다.

JSON에 대한 자세한 내용은 the json.org website을 참조하십시오.