以下是我所做的代码片段,可一些身体帮我在哪里,我错编码是:为什么string ==字符串比较失败?
#include<iostream>
using namespace std;
void modifyName(string &name)
{
size_t sep = string::npos;
sep = name.find_first_of(".");
if(sep != string::npos) { name[sep] = '\0'; }
}
int main()
{
string name("test.rtl");
string someName("test");
modifyName(name);
if(someName == name) //Failing??
cout<<"MATCHED"<<endl;
return 0;
}
+1更换
短暂的,独立的例子 – Flexo 2011-06-10 08:02:11
当我试图调试这我知道,COUT << name.c_str ()<<“...”<< name << endl;输出:test ... testrtl所以cout运算符'<<'在字符串和char *对象上的工作方式不同。只是觉得它值得分享:)。 – pankiii 2011-06-10 08:18:34
当你使用'name.c_str()'你正在从'std :: string'创建一个c风格的字符串时--c风格的字符串是空终止的。正如你在字符串中插入了一个null,这会在c风格时终止它。但是'std :: string'可以包含任何值,包括null - 但是null通常是不可打印的,所以不会被输出......但也不表示字符序列的结束。 – icabod 2011-06-10 09:13:03