C ++需要帮助将字符串转换为tchar,尝试了其他帖子中的一些东西,但没有用
C++ Need help converting string to tchar, tried some things from other posts, but not working
这是我写的第一个C++程序,所以我绝不是c++程序员,还请多多包涵。我需要能够连接到数据库,获取 link,然后从 link 下载文件。一切正常,除了我必须硬编码 link 而不是使用我保存在字符串中的 link 。
我只需要将我的字符串转换为 tchar 并尝试了一些方法,但它不起作用。我需要 TCHAR url[] 在字符串 dotnetlink 中具有值,而不是当前在那里的硬编码 url。谢谢您的帮助。
string dotnetlink;
//REQUEST URL FOR DOWNLOAD
send(Socket,"POST /getdotnetlink.php / HTTP/1.1\r\nHost: www.domain.com\r\nConnection: close\r\n\r\n", strlen("POST /getdotnetlink.php / HTTP/1.1\r\nHost: www.domain.com\r\nConnection: close\r\n\r\n"),0);
char buffer[10000];
int nDataLength;
while ((nDataLength = recv(Socket,buffer,10000,0)) > 0){
int i = 0;
while (buffer[i] >= 32 || buffer[i] == '\n' || buffer[i] == '\r') {
//LINK TO DOWNLOAD STORED IN THIS STRING
dotnetlink = dotnetlink + (buffer[i]);
i += 1;
}
}
closesocket(Socket);
WSACleanup();
cout << dotnetlink;
const TCHAR url[] = _T("http://www.linktomydownload.com/file.exe");
TCHAR 只是 CHAR 或 WCHAR 的 typedef,具体取决于是否定义了 UNICODE 宏。这意味着如果未定义 UNICODE,则不需要转换。如果定义了,可以使用MultiByteToWideChar函数进行转换。
作为提示,TCHAR 和相关的 "T" 前缀宏和 typedef 是 Windows 95 天的东西,当时 Unicode 支持不是很广泛。现在你应该总是使用 Unicode,除了实际需要字节字符串的地方(比如 HTTP 协议)。
以下是您可以如何操作的示例:
WCHAR szDotnetlink[256];
int length = ::MultiByteToWideChar(CP_UTF8, 0, dotnetlink.c_str(), -1, szDotnetlink, 256);
if (length == 0)
// the conversion failed
这是我写的第一个C++程序,所以我绝不是c++程序员,还请多多包涵。我需要能够连接到数据库,获取 link,然后从 link 下载文件。一切正常,除了我必须硬编码 link 而不是使用我保存在字符串中的 link 。 我只需要将我的字符串转换为 tchar 并尝试了一些方法,但它不起作用。我需要 TCHAR url[] 在字符串 dotnetlink 中具有值,而不是当前在那里的硬编码 url。谢谢您的帮助。
string dotnetlink;
//REQUEST URL FOR DOWNLOAD
send(Socket,"POST /getdotnetlink.php / HTTP/1.1\r\nHost: www.domain.com\r\nConnection: close\r\n\r\n", strlen("POST /getdotnetlink.php / HTTP/1.1\r\nHost: www.domain.com\r\nConnection: close\r\n\r\n"),0);
char buffer[10000];
int nDataLength;
while ((nDataLength = recv(Socket,buffer,10000,0)) > 0){
int i = 0;
while (buffer[i] >= 32 || buffer[i] == '\n' || buffer[i] == '\r') {
//LINK TO DOWNLOAD STORED IN THIS STRING
dotnetlink = dotnetlink + (buffer[i]);
i += 1;
}
}
closesocket(Socket);
WSACleanup();
cout << dotnetlink;
const TCHAR url[] = _T("http://www.linktomydownload.com/file.exe");
TCHAR 只是 CHAR 或 WCHAR 的 typedef,具体取决于是否定义了 UNICODE 宏。这意味着如果未定义 UNICODE,则不需要转换。如果定义了,可以使用MultiByteToWideChar函数进行转换。
作为提示,TCHAR 和相关的 "T" 前缀宏和 typedef 是 Windows 95 天的东西,当时 Unicode 支持不是很广泛。现在你应该总是使用 Unicode,除了实际需要字节字符串的地方(比如 HTTP 协议)。
以下是您可以如何操作的示例:
WCHAR szDotnetlink[256];
int length = ::MultiByteToWideChar(CP_UTF8, 0, dotnetlink.c_str(), -1, szDotnetlink, 256);
if (length == 0)
// the conversion failed