我宁愿使用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