Я работал с программой, которая использует функцию для установки нового значения в реестре, я использовал const 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
Как правильно получить строковые параметры? Должен ли я перебирать весь массив символов и выводить каждый из них в строку (значение в реестре было только первыми четырьмя байтами символа)? Или я могу использовать вместо этого std :: string
в качестве параметра?
Я не был уверен, что это ТАКОЙ материал, но я решил опубликовать здесь, так как считаю это один из моих лучших источников информации, связанной с программированием.