使用GetWindowText将文本框保存到文件中:std :: string到LPWSTR

时间:2015-01-05 13:11:10

标签: c++ winapi stdstring

我尝试了各种代码的变体,如何将文本框的内容保存到文件中,例如:

std::string str;   // same problem with std::wstring
GetWindowTextW(hwndEdit, str.c_str(), 0);   // same problem with GetWindowText
std::ofstream file;
file.open("myfile.txt");
file << str;
file.close();

但它们都存在某种字符串变量转换错误:

main.cpp(54) : error C2664: 'GetWindowTextW' : cannot convert parameter 2 from 'const char *' to 'LPWSTR'

如何使用GetWindowTextGetWindowTextW

注意:我不知道提前的长度:它可以是128以及1167个字符或更多。

1 个答案:

答案 0 :(得分:2)

您在代码中调用未定义的行为(UB)。我认为这是你要做的事情,但只有你肯定知道。

int len = GetWindowTextLengthA(hwndEdit);
if (len > 0)
{
    std::vector<char> text(len+1);
    GetWindowTextA(hwndEdit, &text[0], len+1);

    std::ofstream file("myfile.txt", std::ios::out  | std::ios::binary);
    file.write(&text[0], len);
}

我没有方便的Windows机箱,但我认为这是正确的或接近它。

希望它有所帮助。