2012-02-14 19 views
4

문자열이 있습니다. 문자열에 "Hello \ nThis is a test. \ n"가 포함되어 있습니다.char가 새 줄과 같은지 확인하는 방법

문자열의 모든 \ n에 전체 문자열을 분할하고 싶습니다. 나는 이미이 코드를 만든 :

vector<string> inData = "Hello\nThis is a test.\n"; 

for (int i = 0; i < (int)inData.length(); i++) 
{ 
    if(inData.at(i) == "\n") 
    { 
    } 
} 

을하지만이 complite 때, 다음 오류가 발생합니다 : (\ n은 문자열로)

'==' : no conversion from 'const char *' to 'int' 

'==' : 'int' differs in levels of indirection from 'const char [2]' 
(코드 위)

binary '==' : no operator found which takes a left-hand operand of type 'char' (or there is no acceptable conversion) 

문제는 char가 "new line"과 같은지 확인할 수 없다는 것입니다. 어떻게해야합니까?

+4

'벡터 '이라는 것이 확실합니까? –

답변

13

"\n"const char[2]입니다. 대신 '\n'을 사용하십시오.

실제로 코드는 어쨌든 컴파일되지 않습니다.

는 당신은 아마 의미 : 당신은 분명히 그것을 사용하지 않기 때문에

string inData = "Hello\nThis is a test.\n"; 

for (size_t i = 0; i < inData.length(); i++) 
{ 
    if(inData.at(i) == '\n') 
    { 
    } 
} 

내가 (당신이 작동하지 않습니다 const char[],에서 vector<string>을 초기화하려고 한) 코드에서 vector를 제거했습니다.

inData.length()에서 int으로 변환하는 대신 size_t을 사용합니다.

+2

' "\ n"'은 (는)'char const *'가 아닙니다. 그것은'char const [2]'입니다. –

+0

당신은 절대적으로 옳습니다. – netcoder

1

테스트 표현은 그

vector<string> inData (1,"Hello\nThis is a test.\n"); 

for (int i = 0; i < (int)(inData[0].length()); i++) 
{ 
    if(inData.at(i) == '\n') 
    { 
    } 
} 

당신은 내가 생각 포함에서 등록한 라인 문자열을받는 함수를 만들고, 문자열의 벡터를 반환해야해야한다, 또한 잘못

+1

inData [0]이 (가) 사용하기 위해 저장되지 않았습니다. 이 경우 그것은 가능합니다. inData는 벡터이므로 왜 사용하지 않습니까? – Dagob

+0

@lauw 나는 그에게 무엇이 잘못되었는지를 알았고, 그가 무엇을하고 있느냐에 달려있다. –

4
당신은 시도 할 수 있습니다

== "\ n"대신 '\ n'.

관련 문제