我正在使用一个使用函数在注册表中设置新值的程序,我使用 aconst char *
来获取该值。但是,该值的大小只有四个字节。我尝试将其std::string
用作参数,但没有用。
我有一个小例子来告诉你我在说什么,而不是用这个函数解决我的问题,我想知道它这样做的原因。
#include <iostream>
void test(const char * input)
{
std::cout << input;
std::cout << "\n" << sizeof("THIS IS A TEST") << "\n" << sizeof(input) << "\n";
/* The code above prints out the size of an explicit string (THIS IS A TEST), which is 15. */
/* It then prints out the size of input, which is 4.*/
int sum = 0;
for(int i = 0; i < 15; i++) //Printed out each character, added the size of each to sum and printed it out.
//The result was 15.
{
sum += sizeof(input[i]);
std::cout << input[i];
}
std::cout << "\n" << sum;
}
int main(int argc, char * argv[])
{
test("THIS IS A TEST");
std::cin.get();
return 0;
}
Output:
THIS IS A TEST
15
4
THIS IS A TEST
15
获取字符串参数的正确方法是什么?我是否必须遍历整个字符数组并将每个字符打印到一个字符串(注册表中的值只是 char 的前四个字节)?或者我可以std::string
用作参数吗?
我不确定这是否是这样的材料,但我决定在这里发帖,因为我认为这是我获取编程相关信息的最佳来源之一。