2012-02-14 2 views
4

У меня есть строка, строка содержит, например, «Hello \ nThis - это тест. \ N".Как посмотреть, если символ равен новой строке

Я хочу разбить всю строку на каждом \ 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 это, то я получаю сообщение об ошибке: (\ п в виде строки)

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

(выше код)

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

'==' : 'int' differs in levels of indirection from 'const char [2]' 

Проблема в том, что я не могу посмотреть, соответствует ли символ «новой строке». Как я могу это сделать?

+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') 
    { 
    } 
} 

Я удалил vector из вашего кода, потому что вы, по-видимому, не хотите использовать что (вы пытаетесь инициализировать vector<string> из const char[], который не будет работать).

Также обратите внимание на использование size_t вместо преобразования inData.length() на номер int.

+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".