从文本文件在组合框中添加项 我是新的C++,我好像不能添加一个组合框项目。 我总是会遇到这样的错误:str无法转换为lparam,我想不出其他方法

从文本文件在组合框中添加项 我是新的C++,我好像不能添加一个组合框项目。 我总是会遇到这样的错误:str无法转换为lparam,我想不出其他方法,c++,winapi,combobox,ifstream,C++,Winapi,Combobox,Ifstream,谁能帮我一下吗。 谢谢 字符串行; ifstream myfile(“test.txt”); 如果(myfile.is_open()){ while(getline(myfile,line)){ //SendMessage(hWndComboBox,(UINT)CB_ADDSTRING,(WPARAM)0,(LPARAM)行); 我也许能帮上忙。我可以指导你看看你的: while( getline(myfile,line) ) { 问题似乎在于使用这两种不同类型的变量。您还希望用户输入数据并

谁能帮我一下吗。 谢谢

字符串行;
ifstream myfile(“test.txt”);
如果(myfile.is_open()){
while(getline(myfile,line)){
//SendMessage(hWndComboBox,(UINT)CB_ADDSTRING,(WPARAM)0,(LPARAM)行);

我也许能帮上忙。我可以指导你看看你的:

 while( getline(myfile,line) ) {
问题似乎在于使用这两种不同类型的变量。您还希望用户输入数据并将整行数据转换为字符串变量。请尝试:

 while( getline(cin, line) ) {

这行吗?

CB_ADDSTRING
要求
lParam
参数是指向以空结尾的C样式字符串的原始
TCHAR*
指针(其中,
TCHAR
对于ANSI是
char
,对于Unicode是
wchar\u t
,这取决于组合框是使用
A
nsi还是
W
ide版本的
CreateWindow/Ex()
)创建的)

但是您正在尝试键入cast
std::string
对象本身,这将不起作用。您需要键入一个指向字符串数据的cast指针

要获取指向字符串字符数据的以null结尾的指针,需要使用字符串的
c_str()
方法(或c++11及更高版本中的
data()
方法),例如:

或者,使用C++样式转换而不是C样式转换:

SendMessage(hWndComboBox, CB_ADDSTRING, 0, reinterpret_cast<LPARAM>(line.c_str()));
SendMessage(hWndComboBox,CB_ADDSTRING,0,reinterpret_cast(line.c_str());

注意,如果组合框使用Unicode,则无法按原样发送
std::string
数据。您必须重写代码以使用
std::wstring
,或者至少将
std::string
数据转换为
std::wstring
(例如使用
MultiByteToWideChar()
std::wstring\u convert
)在将其传递给
CB\u ADDSTRING

之前,此答案并不试图解决实际被问及的问题-如何将
std::string
转换为
LPARAM
SendMessage(hWndComboBox, CB_ADDSTRING, 0, (LPARAM) line.c_str());
SendMessage(hWndComboBox, CB_ADDSTRING, 0, reinterpret_cast<LPARAM>(line.c_str()));