我寧願使用std::string
,但我喜歡弄清楚這裏出了什麼問題。std ::查找類型T ** vs T * [N]
即使指針運算對它們正確工作,我也無法理解爲什麼std::find
對於T**
類型無法正常工作。像 -
std::cout << *(argv+1) << "\t" <<*(argv+2) << std::endl;
但它工作正常,爲各類T*[N]
。
#include <iostream>
#include <algorithm>
int main(int argc, const char ** argv)
{
std::cout << *(argv+1) << "\t" <<*(argv+2) << std::endl;
const char ** cmdPtr = std::find(argv+1, argv+argc, "Hello") ;
const char * testAr[] = { "Hello", "World" };
const char ** testPtr = std::find(testAr, testAr+2, "Hello");
if(cmdPtr == argv+argc)
std::cout << "String not found" << std::endl;
if(testPtr != testAr+2)
std::cout << "String found: " << *testPtr << std::endl;
return 0;
}
參數傳遞信息:Hello World
輸出:
的Hello World沒有找到
字符串
字符串發現:你好
感謝。
你能不能現在檢查的第二種情況。 – Mahesh 2012-02-09 02:57:00
沒有任何保證字符串文字得到相同的地址。他們可能會或可能不會。一些編譯器在轉換單元上共享字符串文字是相當徹底的,而另一些則不是。 – 2012-02-09 05:24:53