我有一个字符串,该字符串包含例如" Hello \ n这是一个测试。\ 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")
{
}
}
但是当我完成这个时,我得到一个错误: (\ n为字符串)
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]'
问题在于我无法查看char是否等于&#34; new line&#34;。我怎么能这样做?
答案 0 :(得分:15)
"\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
。
答案 1 :(得分:4)
您可能想尝试=='\ n'而不是“\ n”。
答案 2 :(得分: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')
{
}
}
你应该创建一个带字符串的函数,并返回包含吐出线的字符串向量,我认为