2012-10-17 2 views
2

나는 C++에서 다음과 같은 코드를 파일에 작성하려고 시도했지만 "기대했던 것"이라는 문제가 계속 발생합니다. ? 숫자 상수예상 됨 ';' 전에 숫자 상수

int main() { 
    ofstream myfile; 
    myfile.open ("example.xml", ios::out| ios::app| ios::binary); 
    if (myfile.is_open()) 
    { 
    myfile << "<?xml version="1.0" encoding="UTF-8"?> \n"; 
    myfile << "<?xml-stylesheet type="text/xsl" href="wufi1d.xslt"?> \n"; 
    myfile << "<WUFI1D> \n"; 

사람이

+4

당신의 이중 인용 부호를 이스케이프하십시오. – WhozCraig

+2

또는 컴파일러에서 지원하는 경우 [원시 문자열 리터럴] (http://en.wikipedia.org/wiki/C%2B%2B11#New_string_literals)을 사용할 수 있습니다. –

+1

질문을 수정하고 제목을 다시 작성하십시오. 'C++'태그가 없으면 질문이 '프로그래밍'이됩니다.이 질문은 유효한 질문이 아닙니다. –

답변

2
이 DBL-따옴표를 탈출

도와 드릴까요 전에 : 즉

myfile << "<?xml version="1.0" encoding="UTF-8"?> \n"; 

당신은이

0

예를 들어

myfile << "<?xml version=\"1.0\" encoding=\"UTF-8\"?> \n"; 

을해야한다 두배의 코드 - 형광펜을 보여주는 것과 같이 이스케이프 처리되지 않은 따옴표가 없습니다. 출력 된 텍스트에 큰 따옴표를 표시하려면 \"을 사용하십시오.

0

출력 문자열에서 따옴표를 이스케이프 처리하지 않고 있습니다. 예 :

myfile << "<?xml version=\"1.0\" encoding=\"UTF-8\"?> \n"; 
1

임베디드 견적을 이스케이프 처리해야합니다.

이 :

myfile << "<?xml version="1.0" encoding="UTF-8"?> \n"; 
myfile << "<?xml-stylesheet type="text/xsl" href="wufi1d.xslt"?> \n"; 

은 다음과 같아야합니다

myfile << "<?xml version=\"1.0\" encoding=\"UTF-8\"?> \n"; 
myfile << "<?xml-stylesheet type=\"text/xsl\" href=\"wufi1d.xslt\"?> \n"; 
0

을 당신은 문자열 구분 기호없는 백 슬래시를 사용하여 큰 따옴표 (") 탈출해야 :

myfile << "<?xml version=\"1.0\" encoding=\"UTF-8\"?> \n"; 
4

을 다음과 같이 문자열 안의 인용문을 이스케이프 처리해야합니다.

(210)
myfile << "<?xml version=\"1.0\" encoding=\"UTF-8\"?> \n"; 
myfile << "<?xml-stylesheet type=\"text/xsl\" href=\"wufi1d.xslt\"?> \n"; 
myfile << "<WUFI1D> \n"; 

컴파일러는 처음 " 볼 때 문자열이 완료 생각한다 - 그러므로 당신은 당신이 그것을 \"를 이스케이프 문자열에 포함 문자 그대로 의미하는 것이 그것을 말해해야합니다.

See here C++의 문자 이스케이프 코드의 전체 목록입니다.

+0

감사합니다. 완벽하게 작동합니다! –

1

문자열에서 미가공 인용 부호는 문자열의 끝을 나타 내기 때문에 사용할 수 없습니다. 대신 그들을 탈출 :

myfile << "<?xml version=\"1.0\" encoding=\"UTF-8\"?> \n"; 
myfile << "<?xml-stylesheet type=\"text/xsl\" href="wufi1d.xslt"?> \n"; 
myfile << "<WUFI1D> \n"; 

또한 원시 문자열의 일부로서 모든 (공백 포함) 처리 C++ 11 리터럴 원시 문자열을 사용할 수 있습니다

myfile << 
R"(<?xml version="1.0" encoding="UTF-8"?> 
<?xml-stylesheet type="text/xsl" href="wufi1d.xslt"?> 
<WUFI1D> 
)"; 

당신은 괄호가있는 경우 문자열 안쪽에 구분 기호를 넣으십시오. R"###(st(ri)ng)###"

모든 파일을 이스케이프 할 필요가 없도록 후자가 바람직 할 수 있지만 모든 줄 바꿈, 공백 등은 문자열에 포함됩니다 , 그리고 그 구문 강조는 m 에디터가 원시 리터럴을 고려하는지 여부에 따라 에세 드되고, 각 라인이 시작 부분에 여분의 공백을 포함하지 않는 것이 중요하다면 들여 쓰기가 필요합니다. 각 라인의 맨 처음으로 리터럴을 유지해야하므로 .

관련 문제