以下是我所做的代碼片段,可一些身體幫我在哪裏,我錯編碼是:爲什麼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