【问题标题】:Expression must have integral or unscoped enum type on Pointers表达式在指针上必须具有整数或无范围枚举类型
【发布时间】:2013-04-18 01:52:41
【问题描述】:

我正在尝试打开一个链接来记录用户名 uNameAddr
网址:http://zzz.com?username=MyNameIsJack.
所以我需要像"http://zzz.com?username=" + uNameAddr那样做。
但我遇到了一个错误。我猜我的语法似乎不对?

curl_easy_setopt(curl, CURLOPT_URL, "http://zzz.com?username=" + uNameAddr);

整个代码:

char *uNameAddr = (char*) ExeBaseAddress + 0x34F01C;
printf("%s \n", uNameAddr);

CURL *curl;
CURLcode res;

curl = curl_easy_init();
if(curl) {
    curl_easy_setopt(curl, CURLOPT_URL, "http://zzz.com?username=" + uNameAddr);

    res = curl_easy_perform(curl);

    curl_easy_cleanup(curl);
}

更新

所以我尝试了:

char username[512];
strcpy ( username, "http://zzz.com?username=" );
strcat ( username, uNameAddr );

但是在处理这部分时应用程序崩溃了。

curl_easy_setopt(curl, CURLOPT_URL, username);

【问题讨论】:

  • concatenate char array in C 的可能重复项
  • 如果您真正使用 C++,请考虑使用 std::string,它实际上重载了 operator+ 用于字符串连接。
  • 如果你这样做printf("|%s|\n", username);,你会看到什么?
  • @Barmar 它打印了正确的数据,但应用程序崩溃了。
  • @user1553142,那么问题出在其他地方,不是 this 导致应用程序崩溃,摆脱所有其他不相关的代码,只需定义字符串和 printf。它不会崩溃

标签: c++


【解决方案1】:
 #include <iostream>
 #include <string>

 using namespace std;
 ...
 ...

 string str1 = "Hello world.";
 const char* cstr = " Goodbye.";

 string str2(cstr);
 string combined = str1 + str2;

【讨论】:

  • 这仍然会使应用程序崩溃。嗯。
  • curl_easy_setopt() 期望什么类型的参数?
  • curl_easy_setopt(CURL *handle, CURLoption 选项, 参数);
  • 对于URL选项,它需要char*
  • 'parameter' 不是类型。我猜你不是 C/C++ 程序员。如果你需要一个 C 风格的字符串,那么使用 combine.c_str() 作为参数。
【解决方案2】:
char username[512];
strcpy ( username, "http://zzz.com?username=" );
strcat ( username, uNameAddr );

但是在处理这部分时应用程序崩溃了。

不,编译器会在你调用函数之前给你一个错误,说 uNameAddr 是未声明的。事情是这样的:C++ 不是一种你可以随便乱搞的语言。这是一种非常复杂的语言。编码时不能捏造东西——你必须知道你输入的内容是完全正确的。

我建议您忘记您的函数调用,并尝试获取一个仅打印出您的字符串的示例。一旦你得到它的工作,你可以尝试用字符串调用你的函数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-20
    相关资源
    最近更新 更多